日期:2014-05-16  浏览次数:20577 次

关于结构体数组的初始化,是否可以在定义时进行?
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} 就可以全部初始化?

------解决方案--------------------
试下CIDR_S stCIDR[32] = {{0}};