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]={...} };

到目前为止,你做对了。在此元素中,您将初始化四个成员:

 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'}, ""} };

请注意,上面是一个示例,显示您可以使用所有三种方法。实际上,您采用一种方法并在所有三种方法中都使用它。

您收到警告的原因是因为您尝试使用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 回答