Ansi C抱怨数组初始化

8iwquhpp  于 2023-03-28  发布在  其他
关注(0)|答案(2)|浏览(130)

我有一个简单的C程序,在c99下编译得很好,但在ANSI下它会抱怨:

初始化器周围缺少大括号

令人不快的一行是:

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

为什么ANSI C抱怨?我看到一篇帖子说要在{ 0 }周围添加额外的{ },但这对我来说毫无意义...
(我在CentOS中进行编译,以防出现问题)

xxhby3vn

xxhby3vn1#

严格地说(在ANSI C下),如果你要初始化一个多维数组,你应该附加一个花括号。例如,如果一个人将每个元素初始化为一个特定的值,他会做以下事情:

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

zy1mlcev2#

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

这是完全有效的C,在这种情况下,警告只是编译器的指示。
如果你想摆脱警告,你可以这样做:

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

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

相关问题