typedef struct_t struct_array[ROWS][COLS];
int main()
{
struct_array structArray1 = {0};
}
我收到一个错误,说初始化程序周围缺少大括号。我知道关于这个警告有一个 gcc 的错误。还是我做错了什么?
typedef struct_t struct_array[ROWS][COLS];
int main()
{
struct_array structArray1 = {0};
}
我收到一个错误,说初始化程序周围缺少大括号。我知道关于这个警告有一个 gcc 的错误。还是我做错了什么?
您需要使用struct_array structArray1 = {{{0}}};
,第一个用于数组的第一维,第二个用于第二维,第三个用于结构初始化。代码是正确的,但是如其他答案中所述,您的 GCC 存在错误。
你的代码是完全正确的。你说得对,GCC 也有一个错误 -它在此处进行了描述。
你有几个选择:
暂时禁用-Wmissing-braces
。
使用空的初始化大括号(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 } } };
使用不同的编译器。铿锵声,也许?
修复 GCC 中的错误。
尝试:
int main(){
struct_t structArray[ROWS][COLS];
memset(structArray, 0, sizeof(structArray));
}
(memset 用零填充它)