gpt4 book ai didi

c - 如何删除 GCC 4.6 : "missing initializer [-Wmissing-field-initializers]"? 中的警告

转载 作者:太空狗 更新时间:2023-10-29 15:11:01 25 4
gpt4 key购买 nike

代码

  GValue value = { 0 };

给出以下警告:

missing initializer [-Wmissing-field-initializers]

我知道那是 GCC bug ,但是有什么技巧可以删除它吗?看到这样不真实的警告真的不好。但我不想关闭警告,因为它也会对我隐藏真正的警告。抱歉,我还不能将我的 GCC 更新到 4.7(看起来已修复)版本。

最佳答案

使用G_VALUE_INIT 初始化GValue-s。它们的(私有(private))结构位于 /usr/include/glib-2.0/gobject/gvalue.h 中,#define G_VALUE_INIT 适当。

我强烈不同意您关于这是 GCC 错误的评估。如果某个字段未使用 -Wmissing-field-initializers 显式初始化,您会要求收到警告,您会收到应得的警告。

遗憾的是 G_VALUE_INIT 没有记录,但它在这里。代码用

GValue value = G_VALUE_INIT;

如果询问 -Wmissing-field-initializers,则没有通用的解决方案永远不会收到有关缺少字段初始化的警告。当您要求这样的警告时,您需要编译器警告每个不完整的初始化程序。事实上,该标准要求将所有非显式初始化的 struct 字段置零,并且 gcc 遵守该标准。

你可以使用 diagnostic pragmas喜欢

#pragma GCC diagnostic ignored "-Wmissing-field-initializers"

但我的感觉是您应该谨慎编码,并显式初始化所有字段。您收到的警告更像是一种编码风格警告(也许您忘记了一个字段!),而不是错误警告。

我还相信,对于您自己的(公共(public))struct,您应该#define 一个初始化宏,如果这样的 struct 是初始化。

关于c - 如何删除 GCC 4.6 : "missing initializer [-Wmissing-field-initializers]"? 中的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13373695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com