Ho letto in più punti che una struttura C può essere definita in modo sicuro più volte, eppure ottengo un errore di "ridefinizione di struct" da gcc per la definizione di una struct (attraverso più include). Un esempio molto semplificato si presenta così:È possibile definire una struttura C più volte?
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;
};
Se corro gcc foo.c
ottengo:
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
So che non ho inserito alcuna protezione di inclusione e che risolverà l'errore di compilazione, ma la mia comprensione è che questo dovrebbe funzionare comunque. Ho anche provato due definizioni struct bar
in foo.c e ottengo lo stesso messaggio di errore? Quindi, le strutture possono essere definite più volte in C o no?
esempio molto corretto e bel esempio per l'OP :) – Lefteris
sì, in pratica ogni cosa in C può essere dichiarata più volte, ma definirne una una volta. –
Beh, immagino che chiarisca le cose. Grazie. – Elektito