当前位置: 技术问答>linux和unix
关于结构体数组的初始化,是否可以在定义时进行?
来源: 互联网 发布时间:2017-03-31
本文导语: CIDR_S 是个结构体,定义如下: typedef struct tagCIDR { unsigned int uiIP; unsigned int uiMask; }CIDR_S; 现要定义一个 CIDR_S 结构的数组并初始化,如下: CIDR_S stCIDR[32] = {0}; G...
CIDR_S 是个结构体,定义如下:
typedef struct tagCIDR
{
unsigned int uiIP;
unsigned int uiMask;
}CIDR_S;
现要定义一个 CIDR_S 结构的数组并初始化,如下:
CIDR_S stCIDR[32] = {0};
GCC 启用 -Wall 选项后,提示:
警告: 初始值设定周围缺少花括号 [-Wmissing-braces]
警告: (在‘stCIDR[0]’的初始化附近) [-Wmissing-braces]
这个 warning 的含义应该是,初始化结构体数组应该用形如:
{{0,0}, {0,0}...}
的形式,所以提示缺少花括号。
我的问题是,不用 memset,如何消除该 warning?是否不能像单个结构体那样,直接 ={0} 就可以全部初始化?
typedef struct tagCIDR
{
unsigned int uiIP;
unsigned int uiMask;
}CIDR_S;
现要定义一个 CIDR_S 结构的数组并初始化,如下:
CIDR_S stCIDR[32] = {0};
GCC 启用 -Wall 选项后,提示:
警告: 初始值设定周围缺少花括号 [-Wmissing-braces]
警告: (在‘stCIDR[0]’的初始化附近) [-Wmissing-braces]
这个 warning 的含义应该是,初始化结构体数组应该用形如:
{{0,0}, {0,0}...}
的形式,所以提示缺少花括号。
我的问题是,不用 memset,如何消除该 warning?是否不能像单个结构体那样,直接 ={0} 就可以全部初始化?
|
试下CIDR_S stCIDR[32] = {{0}};