Ich habe an mehreren Stellen gelesen, dass eine C-Struktur sicher mehrere Male definiert werden kann, und dennoch bekomme ich eine "Neudefinition der Struktur" -Fehler von gcc für die mehrfache Definition einer Struktur (durch mehrere Includes). Ein sehr vereinfachtes Beispiel sieht wie folgt aus:Kann eine C-Struktur mehrfach definiert werden?
foo.c:
#include "a.h"
#include "b.h"
int main(int argc, char *argv[]) {
struct bar b;
b.a = 2;
return 0;
}
ah:
struct bar {
int a;
int b;
};
bh:
#include "a.h"
struct buz {
int x;
int y;
};
Wenn ich gcc foo.c
laufen erhalte ich:
In file included from b.h:1:0,
from foo.c:2:
a.h:1:8: error: redefinition of ‘struct bar’
a.h:1:8: note: originally defined here
Ich weiß, dass ich keine Include-Wächter gestellt habe und diese werden den Kompilierungsfehler beheben, aber mein Verständnis war, dass dies trotzdem funktionieren sollte. Ich habe auch versucht, zwei struct bar
Definitionen in foo.c und ich bekomme die gleiche Fehlermeldung? Also, können Strukturen mehrfach in C definiert werden oder nicht?
sehr korrektes Beispiel, und nettes Beispiel für das OP :) – Lefteris
yeah, im Grunde kann jedes Ding in C mehrfach erklärt werden aber definiert man einmal. –
Nun, ich denke, das macht alles klar. Vielen Dank. – Elektito