struct中的char初始化

时间:2012-06-08 15:48:53

标签: c struct char

我有以下代码。我得到了“警告:我在构建它时会在初始化程序[-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'}};

或其他方式?

2 个答案:

答案 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 } }
};