2012-09-10 19 views
7

¿Dónde podemos usar estructuras y uniones anónimas?¿Qué estándares permiten estructuras anónimas y uniones en C y C++?

struct 
{ 
    int bar; 
}; // anonymous struct 

union 
{ 
    int bar; 
}; // anonymous union 

Creo que podemos hacerlo en las siguientes normas:

  • sindicatos - 98 C++, C++ 03, 11 C++, C11

  • structs - C11

Estoy en lo cierto o no

+2

gcc también admite uniones anónimas en C99 como extensión GNU –

+0

El estilo del ejemplo 'struct' y' union' que proporcionó solo tiene sentido si lo coloca en otra 'struct' /' union'. ¿Es este el contexto del que hablas? – cha0site

+0

@ cha0site Sí, seguro – FrozenHeart

Respuesta

5

La afirmación sobre C es correcta: la estandarización de estructuras y uniones anónimas es bastante nueva (C11) cfr. GCC man.

Tenga en cuenta que su compilador preferido podría habilitar esas características como extensiones del estándar actual admitido (por ejemplo, extensiones GNU C99).

Luego, verificando especificaciones antiguas, parece que las uniones anónimas son compatibles en C++ desde 1998.

Es sabido que las estructuras anónimas están prohibidas en C++ y no encontré ninguna enmienda. A partir del Visual studio 2012, se confirma que C++ no admite esta función.

+0

Gracias! ¿Y qué hay de C++? – FrozenHeart

+0

Actualicé la respuesta. – ziu

Cuestiones relacionadas