关于此警告有很多问题,但是我尝试过的所有问题似乎都未能使警告消失。

这就是我所拥有的:

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发出警告。第一对结构使用{},第二对用于 union ,第三对用于数组。

关于c - GCC-初始化程序周围缺少花括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28140225/

10-11 15:38