2012-09-10 5 views
7

Dove possiamo utilizzare le strutture anonime e i sindacati?Quali standard consentono le strutture anonime e le unioni in C e C++?

struct 
{ 
    int bar; 
}; // anonymous struct 

union 
{ 
    int bar; 
}; // anonymous union 

penso che possiamo fare nelle seguenti norme:

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

  • struct - C11

Ho ragione o no

+2

gcc supporta anche le unioni anonime in C99 come estensione GNU –

+0

Lo stile dell'esempio 'struct' e' union' fornito ha senso se lo si inserisce in un altro 'struct' /' union'. È questo il contesto di cui stai parlando? – cha0site

+0

@ cha0site Sì, certo – FrozenHeart

risposta

5

L'affermazione su C è corretta: la standardizzazione di strutture e unioni anonime è piuttosto nuova (C11) cfr. GCC man.

noti che il compilatore preferito potrebbe consentire a tali caratteristiche come estensioni all'attuale standard supportato (ad esempio estensioni GNU C99).

Poi, controllando le vecchie specifiche, sembra che i sindacati anonimi sono supportate in C++ dal 1998.

E 'risaputo che le strutture anonimi sono proibiti in C++ e non ho trovato alcun emendamento. A partire da Visual studio 2012, viene confermato che C++ non supporta questa funzione.

+0

Grazie! E che dire del C++? – FrozenHeart

+0

Ho aggiornato la risposta. – ziu