前提・実現したいこと
構造体を初期化しようと、下記のようなコードを書きました。clangではコンパイルが通るのですが、GCC 8.30では、コンパイルすることができません。そもそもこのような初期化はできないということなのでしょうか。
また、言語仕様としてはどのようになっているのかご存じの方がいらっしゃいましたら、ポインタなど教えていただけるとうれしいです。
発生している問題・エラーメッセージ
コンパイルすると下記のメッセージが表示されます。
test.cpp: In function ‘int main()’: test.cpp:16:3: error: C99 designator ‘hoge’ outside aggregate initializer }; ^
該当のソースコード
C++
1struct foo { 2 char hoge[32]; 3}; 4 5union bar { 6 foo f; 7 foo g; 8}; 9 10int main() 11{ 12 bar a = { 13 .f = { 14 .hoge = "Hello world" 15 } 16 }; 17}
上記コードをもう少し単純にしてみました。
C++
1struct foo { 2 char hoge[32]; 3}; 4 5foo a = { 6 .hoge = "Hello world" 7};
試したこと
Appleのclang、あるいはDebianにインストールしたclang 7.0.1ではコンパイルすることができました。
どうぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/03 07:49
2020/03/03 07:52
2020/03/03 07:57
2020/03/03 08:13
2020/03/03 08:25
2020/03/03 08:45
2020/03/03 08:53
2020/03/03 08:56 編集