He leído en varios lugares que una estructura C se puede definir con seguridad varias veces y, sin embargo, obtengo un error de "redefinición de la estructura" de gcc para multiplicar la definición de una estructura (a través de varias inclusiones). Un ejemplo muy simplificado es el siguiente:¿Se puede definir una estructura C varias veces?
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;
};
Si me quedo gcc foo.c
me sale:
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
Sé que no puse guardias de inclusión y corregirán el error de compilación, pero entendí que, no obstante, esto debería funcionar. También probé dos definiciones struct bar
en foo.c y me sale el mismo mensaje de error? Entonces, ¿pueden las estructuras definirse varias veces en C o no?
ejemplo muy correcto, y buen ejemplo para el OP :) – Lefteris
Sí, básicamente todo en C se puede declarar varias veces, pero definir una vez. –
Bueno, supongo que eso aclara las cosas. Gracias. – Elektito