2016-11-09 3 views
-4

Ich bekomme diese Fehler, wenn ich meinen Code kompiliere und ich bin mir nicht sicher, wie man sie behebt.Undefinierter Verweis auf eine Funktion Ich erklärte

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

Mein Code:

#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

Ja, das ist das gleiche wie Sie versuchen, halbgekochten Reis zu essen ... –

+0

Wo ist Ihre Implementierung von 'kToM'? –

+4

mit anderen Worten, Sie müssen die Funktionen definieren, Deklaration ist nicht genug. –

Antwort

2

Hier ist, wie Sie Ihren Code neu schreiben müssen:

#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 */ 
} 

Sie sollten Ihre Funktionen für kToM und mToK außerhalb von main definieren.

+1

Er versuchte, sie zu definieren, er hat es einfach falsch gemacht. Schauen Sie sich die 5 Zeilen nach dem Funktionsaufruf an. – Barmar

+0

Verschachtelte Funktionen für jedermann? – Supercan

+0

@Supercan Nun, Sie können Ihre Funktionen sicherlich nicht in einer for-Schleife deklarieren. Und Sie können keine Funktionsprototypen erstellen, wenn die Funktionen in main verschachtelt sind. –

Verwandte Themen