繁体   English   中英

如何消除针对 c++17 功能的 gcc 警告?

[英]how to silence gcc warning against c++17 features?

我自己构建了 gcc 7 来尝试一些新的 c++17 功能。

当我构建代码时,我看到了数百行警告,说某些功能仅在 -std=c++1z 时可用(我已经在构建命令行中指定了 -std=c++1z 并且我尝试了 gnu++ 1z也是)

我想消除这个警告。 使用 clang 4 时,有一个选项 -Wno-c++1z-extensions

但是这个选项不被 gcc 识别。

我有根导致我的问题的原因。

这是因为我用cmake设置了-std = c ++ 17。 我也包括了Qt5。 Qt5设置覆盖了我的-std = c ++ 17。 使用make VERBOSE = 1,我可以看到-std = c ++ 17和-std = c ++ 14。

这会混淆编译器。

该问题与https://gitlab.kitware.com/cmake/cmake/issues/16468有关

gcc 12 支持抑制特定c++版本警告的选项

-Wno-c++17-extensions (适用于 gcc12 和 clang)

参考 gcc/clang 编译选项:

https://docs.adacore.com/live/wave/gcc-12.x/html/gcc/gcc.html#Warning-Options

https://releases.llvm.org/12.0.0/tools/clang/docs/DiagnosticsReference.html#diagnostic-flags

但最好通过 flag 支持 c++17 特性:

  • -std=c++17
  • -std=gnu++17

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM