2016-05-24 5 views
-2

Ich kann nicht den Grund finden, warum first = create_nod(); erscheint der Fehler.Zuordnung macht Zeiger aus Integer ohne eine Besetzung, beim Erstellen eines ersten Nicken mit der Funktion erstellen Knoten

struct nod * create_queue() { 
    struct nod * first; 
    first = create_nod(); 
    return first; 
} 

struct nod * create_nod() { 
    struct nod * tmp; 
    tmp = (struct nod *) malloc(sizeof(struct nod)); 
    printf("Nume: "); 
    scanf("%s", tmp->name); 
    tmp->next = NULL; 
    return tmp; 
}; 
+1

Bitte die vollständige Fehlermeldung posten –

Antwort

2

Ohne eine geeignete MCVE ist es schwer, etwas zu tun, aber erraten, aber meine Vermutung ist, dass Sie, bevor Sie es nennen keine Funktion Prototyp Erklärung create_nod haben. Vor dem C99-Standard war es dem Compiler erlaubt, Funktionsdeklarationen abzuleiten, wenn man eine Funktion aufruft, die noch nicht deklariert wurde, und die Annahme war, dass sie immer int zurückgeben würde.

Da der Compiler die nicht angemeldete Funktion denkt create_nod eine int zurückgibt und Sie zuweisen, dass int Wert auf einen Zeiger, können Sie die Warnung.

Die Lösung ist, entweder die gesamte Definition von create_nod vor create_queue zu verschieben oder zumindest eine Funktionsprototyp-Deklaration über create_queue zu erstellen.

Und die Lektion hier ist, dass Sie immer Dinge deklarieren sollten, bevor Sie sie verwenden.

Verwandte Themen