C11 soporta estructuras anónimas, así:¿Por qué C++ 11 no admite estructuras anónimas, mientras que C11 sí?
struct Foo
{
struct
{
size_t x, y;
};
};
struct Foo f;
f.x = 17;
f.y = 42;
Básicamente, los miembros de dicha una struct
se tratan como si fueran miembros de la encierra struct
o union
(de forma recursiva, si la estructura de cerramiento era en sí misma anónimo).
¿Cuál fue la razón de ser de C++ 11 que no incluía también estructuras anónimas? No son muy útiles (sobre todo dentro de uniones, para eliminar el tipeo de un identificador para el struct
). Pero parecen una adición suficientemente obvia a la especificación (y una ya implementada por muchos compiladores) que seguramente se debieron haber discutido, al menos para preservar la compatibilidad con el estándar C11. Entonces, ¿por qué no fueron agregados?
No estoy de acuerdo con el voto en que esta pregunta no sea constructiva. Las preguntas más suaves también están bien. – GManNickG
__Prácticamente hablando, la mayoría de los compiladores de C++ 11 también admiten estructuras anónimas. Los he usado tanto en MSVC++ (desde siempre) como en el compilador llvm C++ 11 de Apple. – bobobobo
MinGW también admite estructuras/uniones anónimas. –