2012-09-10 13 views
7

Wo können wir anonyme Strukturen und Vereinigungen verwenden?Welche Standards erlauben anonyme Strukturen und Vereinigungen in C und C++?

struct 
{ 
    int bar; 
}; // anonymous struct 

union 
{ 
    int bar; 
}; // anonymous union 

Ich denke, dass wir es in den folgenden Normen tun:

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

  • structs - C11

Habe ich Recht oder nicht

+2

gcc unterstützt auch anonyme Verbindungen in C99 als GNU-Erweiterung –

+0

Der von Ihnen angegebene Stil des Beispiels 'struct' und' union' macht nur dann Sinn, wenn Sie ihn in eine andere 'struct' /' union' einfügen. Ist das der Kontext, von dem du sprichst? – cha0site

+0

@ cha0site Ja, sicher – FrozenHeart

Antwort

5

Die Aussage über C ist richtig: Die Standardisierung anonymer Strukturen und Vereinigungen ist ziemlich neu (C11) cfr. GCC man.

Beachten Sie, dass Ihr bevorzugter Compiler diese Funktionen als Erweiterungen des aktuell unterstützten Standards (z. B. GNU C99-Erweiterungen) aktivieren könnte.

Dann, alte Spezifikationen überprüfen, scheint es, dass anonyme Verbindungen in C++ seit 1998 unterstützt werden.

Es ist allgemein bekannt, dass anonyme Strukturen in C++ verboten sind und ich keine Änderung gefunden habe. Ab Visual studio 2012 wird bestätigt, dass C++ diese Funktion nicht unterstützt.

+0

Danke! Und was ist mit C++? – FrozenHeart

+0

Ich habe die Antwort aktualisiert. – ziu