すべての構造体メンバーを 0 に初期化したい。一般的な解決策は、次のようにすることです。
struct foo bar = {0}
この例を作成します:
#include <stdio.h>
struct Stru2 {
int c;
int d;
};
struct Stru1 {
int a;
Stru2 b;
};
int main()
{
struct Stru1 aaa = { 0 };
return aaa.b.c;
}
そして、ANSIがこれをどのように処理するかを確認するために、このパラメーターを使用してコンパイル(gcc 4.6.3)します
gcc -Wall -Wextra -pedantic -ansi main.cpp
そして、次の警告が表示されました。
main.cpp: In function ‘int main()’:
main.cpp:36:28: warning: missing initializer for member ‘Stru1::b’ [-Wmissing-field-initializers]
問題は、なぜ-Wextraがこの警告を生成するのかということです。常に "= {0}" とは限りません。すべてのメンバーを 0 に設定しますか?