2012-09-10 9 views
7

匿名の構造体と共用体はどこで使用できますか?CおよびC++で匿名の構造体および共用体を許可する標準はどれですか?

struct 
{ 
    int bar; 
}; // anonymous struct 

union 
{ 
    int bar; 
}; // anonymous union 

私たちは次の規格でそれを行うことができると思います。

  • 組合 - C++ 98、C++ 03、C++ 11、C11

  • 構造体 - C11

アムI右か

+2

gccはC99のGNU拡張版としても匿名ユニオンをサポートしています –

+0

あなたが提供した 'struct'と' union'のスタイルは、別の 'struct' /' union'に置くだけです。これはあなたが話している文脈ですか? – cha0site

+0

@ cha0siteええ、確かに – FrozenHeart

答えて

5

Cに関するステートメントは正しいです:匿名の構造体と共用体の標準化はかなり新しいです(C11)cfr. GCC man

ご希望のコンパイラでは、現在サポートされている標準(GNU C99拡張など)の拡張機能としてこれらの機能を有効にできます。

その後、古い仕様をチェックすると、1998以降、C++で匿名の共用体がサポートされているようです。

匿名の構造体はC++では禁止されていますが、私は修正が見つかりませんでした。 Visual studio 2012の時点で、C++はこの機能をサポートしていないことが確認されています。

+0

ありがとう! C++についてはどうですか? – FrozenHeart

+0

私は答えを更新しました。 – ziu

関連する問題