1

私は以下のコードを持っています。ビルドすると、「警告:初期化子の周りに中括弧がありません[-Wmissing-braces]」という警告が表示されます。

struct routing {
    int hop_distance;
    char timeinfo[13];
    char sender_ID[16];
    char gateway[16];
};

struct routing user_list[40]  =  { [0]={0,0,0,0}};

charの初期化が原因で警告が表示されると思いますが、どのように初期化する必要がありますか?

struct routing user_list[40]  =  { [0]={0,{0},{0},{0}}};

また

struct routing user_list[40]  =  { [0]={0,'\0','\0','\0'}};

または他の方法?

4

2 に答える 2

2

配列の要素0を初期化しています。したがって:

 struct routing user_list[40] = { [0]={...} };

これまでのところ、あなたはそれを正しく理解しました。この要素では、4つのメンバーを初期化しています。

 struct routing user_list[40] = { [0]={..., ..., ..., ...} };

また良い。

要素1はであるintため、0などの数値で初期化できます。

要素2、3、4はの配列でcharあるため、の配列を初期化するのと同じ方法で初期化できますchar{0}{'\0'}または""それらはすべて機能します:

 struct routing user_list[40] = { [0]={0, {0}, {'\0'}, ""} };

上記は、3つの方法すべてを使用できることを示す例であることに注意してください。実際には、1つの方法を使用して、3つすべてで使用します。

警告が表示される理由は、配列を。0ではなく、で初期化しようとしているためです{0}

于 2012-06-08T16:02:34.040 に答える
0

配列を中括弧で囲む必要があります。

struct routing user_list[40] = {
    [0] = { 0, { 0 }, { 0 }, { 0 } }
};
于 2012-06-08T16:04:57.370 に答える