我自己编译了gcc 7,以尝试一些新的c++17功能。在构建代码时,我看到数百行警告,说某些特性仅在-std=c++1z(我已经在构建命令行中指定了-std=c++1z,并尝试过gnu++1z)时可用。我想要消除这个警告。当使用clang 4时,有一个选项-Wno-c++1z-extensions,但是gcc不认识这个选项。
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
但最好通过以下标志来支持C++17特征:
-std=c++17
-std=gnu++17
-std=c++14
,这可能使得gcc
成为一个c++14
编译器。但是,不建议使用此设置来抑制警告,而应该使用正确的语言设置。 - skyking