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 的警告。第一对{}为结构,第二对为联合,第三对为数组。