簡體   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