Warum bin ich immer diese Fehlermeldung: "Datendefinition hat keinen Typ oder Speicherklasse"?
#include <stdio.h>
#include <stdlib.h>
struct NODE {
char* name;
int val;
struct NODE* next;
};
typedef struct NODE Node;
Node *head, *tail;
head = (Node*) malloc( sizeof( Node ) ); //line 21
Und ich kompilieren wie diese:
cc -g -c -o file.tab.o file.tab.c
Ich bin immer diese Fehlermeldung:
file.y:21:1 warning: data definition has no type or storage class [enabled by default]
InformationsquelleAutor Daivid | 2013-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie die Linie
außerhalb der
main()
Funktion. Das kannst du nicht tun, denn man kann nicht das ausführen von code außerhalb von Funktionen. Die einzige Sache, die Sie tun können, im globalen Gültigkeitsbereich ist deklarieren von Variablen. Bewegen Sie einfach es in dermain()
oder einer anderen Funktion, und sollte das problem Weg.(PS: werfen Sie einen Blick auf diese Frage auf, warum sollten Sie nicht type-cast
malloc
)kämpfte mit diesem für eine Stunde...so dumm...jetzt bin ich verlegen, lol, Dank!
Ich bekomme die gleiche Fehlermeldung, wenn ich schreiben
dev_t dev; dev = MKDEV(300, 0)
statt, wenn ich Schreibedev_t dev = MKDEV(300, 0)
, mein Modul läuft einwandfrei. Warum ist das so? Was ist der Grund dafür?InformationsquelleAutor Natan Streppel
Versuchen Sie, die malloc-und Variablen-Deklarationen in einer main-Funktion und löschen Sie den Zauber auf malloc. Es sollte wie folgt Aussehen:
typedef
) ausmain
, wenn Sie wollen, dass Sie wiederverwendbar durch andere Teile des Projekts.InformationsquelleAutor smnh3
Das problem ist, dass du versuchst zu nennen
malloc
wenn Sie nicht die Ausführung innerhalb einer Funktion. Wenn Sie wickeln, dass in einermain
Funktion, zum Beispiel:... es funktioniert Prima. GCC-Fehler ist ein wenig kryptisch, aber das problem ist im Grunde, dass Sie versuchen, eine variable zu initialisieren mit etwas, das nicht eine Konstante, die nicht außerhalb der Funktion.
InformationsquelleAutor Matt Patenaude
Sie benötigen, um Ihren code innerhalb einer Funktion:
funktionieren sollte
InformationsquelleAutor Rahul