typedef struct_t struct_array[ROWS][COLS];
int main()
{
struct_array structArray1 = {0};
}
我收到一条错误消息,说初始化程序周围缺少大括号。我知道有关于此警告的gcc错误。或者我做错了什么?
答案 0 :(得分:3)
您需要使用struct_array structArray1 = {{{0}}};
,第一个用于数组的第一维,第二个用于第二维,第三个用于结构初始化。代码是正确的,但你的GCC是错误的,如其他答案所述。
答案 1 :(得分:2)
您的代码完全正确。你也是对的,GCC也有一个错误 - it's described here。
您有几个选择:
暂时停用-Wmissing-braces
。
使用空的initalizer括号(GCC扩展名):
struct_array structArray1 = {};
初始化一个完整的对象。对于三元素struct_t
,例如:
struct_array structArray1 = { { { 0, 0, 0 } } };
指定所有必要的大括号和零。假设结构类型与上面的#3相同,并且是2x2数组:
struct_array structArray1 = { { { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 } },
{ { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 } } };
使用其他编译器。 clang,也许?
修复GCC中的错误。
答案 2 :(得分:1)
尝试:
int main(){
struct_t structArray[ROWS][COLS];
memset(structArray, 0, sizeof(structArray));
}
(memset用零填充)