C11 supporta strutture anonime, in questo modo:Perché C++ 11 non supporta le strutture anonime, mentre C11 lo fa?
struct Foo
{
struct
{
size_t x, y;
};
};
struct Foo f;
f.x = 17;
f.y = 42;
Fondamentalmente, i membri di tale struct
sono trattati come se fossero membri del racchiude struct
o union
(ricorsivamente, se la struttura racchiude in sé era anonima).
Qual è stata la logica del C++ 11 che non include anche strutture anonime? Sono di utilità non comune (per lo più all'interno dei sindacati, per eliminare la digitazione di un identificatore per il struct
), certamente. Ma sembrano un'aggiunta abbastanza ovvia alle specifiche (e una già implementata da molti compilatori) che sicuramente devono essere state discusse, almeno per preservare la compatibilità con lo standard C11. Allora perché non sono stati aggiunti?
Non sono d'accordo con il voto che questa domanda non sia costruttiva. Anche le domande più delicate vanno bene. – GManNickG
__ In pratica, la maggior parte dei compilatori C++ 11 supporta anche strutture anonime. Li ho usati sia in MSVC++ (da sempre) che con il compilatore Cll 11 di llvm di Apple. – bobobobo
MinGW supporta anche strutture/unioni anonime. –