GCC - 初始化程序周围缺少大括号
GCC - Missing braces around initializer
关于这个警告有很多问题,但 none 我试过的似乎让警告消失了。
这是我的:
typedef struct {
union {
float data[16];
float col_row[4][4];
};
} matrix44;
// ...
matrix44 result = {0};
我正在尝试将结构初始化为零,但无法让它不给出错误。这正在编译为 C11。
我也试过其他变体,有些可笑:
matrix44 result = {{0}};
matrix44 result = { {0}, {0} };
matrix44 result = { {0}, { {0}, {0} } };
当然他们都会给出警告。
如果我将结构缩减为一维 data
数组,那么我可以在没有警告的情况下使用 {{0}}
初始化它。但是将它减少到二维 col_row
数组仍然会以任何一种方式发出警告。
是否有避免警告的正确方法?或者在这种情况下警告不正确?
使用:
matrix44 result = {{{0}}};
避免 gcc
的警告。第一对{}
为结构,第二对为联合,第三对为数组。
关于这个警告有很多问题,但 none 我试过的似乎让警告消失了。
这是我的:
typedef struct {
union {
float data[16];
float col_row[4][4];
};
} matrix44;
// ...
matrix44 result = {0};
我正在尝试将结构初始化为零,但无法让它不给出错误。这正在编译为 C11。
我也试过其他变体,有些可笑:
matrix44 result = {{0}};
matrix44 result = { {0}, {0} };
matrix44 result = { {0}, { {0}, {0} } };
当然他们都会给出警告。
如果我将结构缩减为一维 data
数组,那么我可以在没有警告的情况下使用 {{0}}
初始化它。但是将它减少到二维 col_row
数组仍然会以任何一种方式发出警告。
是否有避免警告的正确方法?或者在这种情况下警告不正确?
使用:
matrix44 result = {{{0}}};
避免 gcc
的警告。第一对{}
为结构,第二对为联合,第三对为数组。