typedef struct foo_s {
int a;
} foo;
typedef struct bar_s {
foo;
int b;
} bar;
Básicamente quiero hacer:¿Puedo 'extender' una estructura en C?
bar b;
b.a;
Yo sé que podría hacer b.foo_name.a si hubiera llamado la struct foo en bar, pero Id prefiero no hacerlo.
¿Alguna forma de hacerlo?
Esta pregunta ha recibido una variedad de respuestas diferentes, así que déjame explicarte la necesidad. La razón por la que quiero hacer esto es porque tengo una biblioteca que necesito adaptar a mi situación, lo que significa que no puedo modificar la declinación de la estructura original. Además, todo lo que necesito hacer es agregar 1 elemento al principio de la estructura (¿por qué al principio? Porque tengo una estructura 'objeto' que encabeza todas las estructuras en el proyecto). Simplemente podría insertar la estructura como mencionas pero es realmente molesto ya que todas las referencias deberán escribirse 'variable-> image.location' en 'imagen'. tipeó mil millones de tipos es realmente molesto.
Algunos compiladores que ofrecen todo el comportamiento como una extensión Personalmente, creo que proporciona demasiado riesgo (anidar 'struct's a seis capas de profundidad y olvidar los nombres que has usado) así que solo nombro al primer miembro' _' - corto, consistente, fuera del camino, y no terriblemente inconveniente . (El nombre podría estar reservado por el estándar y/o el compilador, pero dudo que alguien lo use). –
Si 'image' es molesto para escribir mucho, use' img'. Utilice find-and-replace para hacerlo por usted. No te preocupes: lo que sea que acabes teniendo que hacer, sobrevivirás. –
@ chacham15 Amigo, evite etiquetar una pregunta C como C++. Estos dos idiomas son completamente diferentes. –