【问题标题】:GCC - Missing braces around initializerGCC - 初始化器周围缺少大括号
【发布时间】:2015-01-25 19:00:39
【问题描述】:

关于这个警告有很多问题,但我尝试过的问题似乎都没有使警告消失。

这就是我所拥有的:

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

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

【问题讨论】:

    标签: c gcc c11


    【解决方案1】:

    用途:

    matrix44 result = {{{0}}};
    

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

    【讨论】:

    • 啊,这就是它崩溃的方式。成功了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2014-03-15
    • 1970-01-01
    相关资源
    最近更新 更多