typedef union { unsigned x; } T;
T a;
a.x = 3;
int main() { return 0; }
このコードを でコンパイルしようとするとgcc t.c
、
error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
使用して
gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
a.x = 3;
内部に移動main
すると、期待どおりに動作します。
からのパッセージを見つけたい
ISO/IEC 9899:TC3
グローバル名前空間の共用体に値を割り当てることは禁止されていると説明されています。
EDIT:構造体でも同じことが起こります。