2016-11-09 2 views
-4

Я получаю эти ошибки, когда компилирую свой код, и я не уверен, как их исправить.Неопределенная ссылка на функцию, которую я объявила

main.c:(.text+0x51): undefined reference to 'kToM' 
main.c:(.text+0x69): undefined reference to 'kToM' 
collect2: error: ld returned 1 exit status 

Мой код:

#include <stdio.h> 

int kToM (int, float); 
int mToK (int, float); 

int main(void) 
{ 
    int kilometers; 
    float conversion = 1.609344; 
    int miles; 

    printf("Kilometers per hour converted to miles per hour:/n"); 
    printf("Kph/tMph/n"); 
    for(kilometers = 185; kilometers >= 0; kilometers - 5) 
    { 
     miles = kToM(kilometers, conversion); 
     kToM(kilometers,conversion); 
     { 
      miles = kilometers/conversion; 
      return miles; 
     } 
     printf("%f/t%f", kilometers, miles); 
    } 
} 
+1

Да, это то же самое, что вы пытаетесь съесть поваренный рис ... –

+0

Где ваша реализация 'kToM'? –

+4

Другими словами, вы должны определить функции, декларации недостаточно. –

ответ

2

Вот как вам нужно переписать код:

#include <stdio.h> 

int kToM (int, float); 
int mToK (int, float); 

int main(void) 
{ 
    /* main function here */ 
} 

int kToM(int foo, float bar) 
{ 
    /* kToM function here */ 
} 

int mToK(int foo, float bar) 
{ 
    /* mToK function here */ 
} 

Вы должны определить свои функции для kToM и mToK снаружи main.

+1

Он попытался их определить, он просто сделал это неправильно. Посмотрите на 5 строк после вызова функции. – Barmar

+0

Вложенные функции кто-нибудь? – Supercan

+0

@Supercan Ну, вы, конечно, не можете объявлять свои функции в цикле for. И вы также не можете создавать прототипы функций, если функции вложены в основную. –

Смежные вопросы