[英]Ansi C complains about array initializing
我有一个简单的C程序,可以在c99下正常编译,但是在ANSI下它会抱怨:
初始化程序周围缺少花括号
令人反感的行是:
int myarr[3][3]={0};
为什么ANSI C抱怨? 我看到一个帖子说要在{0}周围添加其他{},但这对我来说没有意义...
(以防万一,我正在CentOS中进行编译)
int myarr[3][3]={0};
这是完全有效的C语言,在这种情况下,警告仅是编译器的指示。
如果要摆脱警告,可以执行以下操作:
int myarr[3][3]={{0}};
如果您将gcc
与-Wall
选项一起使用,也可以添加-Wno-missing-braces
。
如果要初始化多维数组,则严格(在ANSI C下)应使用大括号。 例如,如果将每个元素初始化为特定值,则将执行以下操作:
int myarr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.