GCC - 初始化程序周围缺少大括号

时间:2015-01-25 19:00:39

标签: c gcc c11

关于这个警告有很多问题,但我所尝试的没有一个似乎让警告消失了。

这就是我所拥有的:

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数组仍然会发出警告。

有没有正确的方法来避免警告?或者在这种情况下警告是否不正确?

1 个答案:

答案 0 :(得分:11)

使用:

matrix44 result = {{{0}}};

以避免使用gcc发出警告。第一对{}用于结构,第二对用于联合,第三对用于数组。