我有以下代码。我得到了“警告:我在构建它时会在初始化程序[-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'}};
或其他方式?
答案 0 :(得分: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}
初始化数组。
答案 1 :(得分:0)
你必须用大括号包围数组:
struct routing user_list[40] = {
[0] = { 0, { 0 }, { 0 }, { 0 } }
};