gpt4 book ai didi

c++ - 忽略 gcc/clang 的 "-Wmissing-braces"警告是否明智?

转载 作者:太空狗 更新时间:2023-10-29 23:13:40 36 4
gpt4 key购买 nike

考虑以下程序:

#include <array>

int main()
{
std::array<int, 1> x = { 0 }; // warning!
x = { { 0 } }; // no warning
return 0;
}

第一次初始化导致 gcc 4.7.2 上的警告...

main.cpp:5:22: warning: unused variable ‘x’ [-Wunused-variable]

...和 ​​clang 3.1

main.cpp:5:28: warning: suggest braces around initialization of subobject [-Wmissing-braces]
std::array<int, 1> x = { 0 };

就标准而言,双花括号或单花括号之间应该没有区别,至少在这个例子中是这样。

处理警告的方式有两种:

  1. 关掉它
  2. 修改代码,让编译器开心

你有什么建议?恕我直言,双 curl 的表情看起来有些难看。另一方面,警告可能会在更复杂的示例中检测到真正的问题。您知道警告会帮助您的示例吗?

最佳答案

-Wmissing-braces will no longer be enabled in GCC's -Wall (for C++ mode), as of 4.8, for precisely the reason you describe.对于当前版本的 GCC,禁用或忽略该警告,您拥有的代码是按应有的方式编写的。

警告可能是为了覆盖诸如

之类的代码
struct A { int a; int b; };
struct B { A a; int b; };
B b = {
1,
2 // initialises b.a.b, not b.b
};

但是,恕我直言,-Wmissing-field-initializers 已经处理得很好,它不会警告您的原始代码。

关于c++ - 忽略 gcc/clang 的 "-Wmissing-braces"警告是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37679237/

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