Ansi C抱怨数组初始化

时间:2013-01-20 21:27:05

标签: c arrays initialization ansi

我有一个简单的C程序,可以在c99下编译,但在ANSI下它抱怨:

在初始化程序周围缺少大括号

违规行是:

int myarr[3][3]={0};

为什么ANSI C会抱怨?我看到一个帖子说要在{0}附近添加额外的{},但这对我没有意义......

(我在CentOS中编译以防万一)

2 个答案:

答案 0 :(得分:3)

int myarr[3][3]={0};

这是完全有效的C,在这种情况下警告只是编译器的指示。

如果您想摆脱警告,可以这样做:

int myarr[3][3]={{0}};

,如果您使用-Wno-missing-braces gcc选项,也可以添加-Wall

答案 1 :(得分:3)

严格(在ANSI C下)如果要初始化多维数组,则应该使用额外的花括号。例如,如果将每个元素初始化为特定值,则执行以下操作:

int myarr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};