【发布时间】:2016-12-09 00:08:02
【问题描述】:
示例代码:
#include <stdio.h>
typedef struct
{
unsigned int a,
unsigned int b,
unsigned int c
} user_struct;
int main()
{
user_struct arr[5] = {0}; // gives warning on compilation
return 0;
}
上面的代码在 gcc5.4 中给出了警告 以下是警告。
警告:初始化器周围缺少大括号
我的理解是,如果我想将任何对象初始化为 0,我可以等同于 {0}。
如何在没有编译器警告的情况下将结构数组初始化为 0?谢谢。
【问题讨论】:
-
你不能将
0分配给一个结构,你需要分配给每个结构成员。 -
试试
= {{0, 0, 0}} -
试试
{{0}}。另外你在user_struct中有错字。 -
user_stuct arr[5] = { { 0 } };— 外大括号将数组初始化为一个整体,内大括号将数组的元素 0 初始化为粗略的近似值。在您的结构定义中,您需要在成员定义的末尾使用分号而不是逗号(或什么都没有)。你应该复制'n'paste以避免在SO问题中出现这样的错别字。 -
我应该剪切+粘贴但在 SO 上键入代码。很抱歉。
标签: c initialization warnings