Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何消除gcc对c+的警告+;17个特征?_C++_Gcc_C++17 - Fatal编程技术网

C++ 如何消除gcc对c+的警告+;17个特征?

C++ 如何消除gcc对c+的警告+;17个特征?,c++,gcc,c++17,C++,Gcc,C++17,我自建了GCC7来尝试一些新的c++17特性 当我构建代码时,我看到了上百行警告,说某些功能只有在-std=c++1z时才可用(我已经在构建命令行中指定了-std=c++1z,我也尝试了gnu++1z) 我想让这个警告保持沉默。当使用clang4时,有一个选项-Wno-c++1z扩展 但gcc无法识别此选项。我已找到问题的根源 这是因为我用cmake设置了-std=c++17。我还包括了Qt5。Qt5设置重写了my-std=c++17。使用make VERBOSE=1,我可以看到-std=c++

我自建了GCC7来尝试一些新的c++17特性

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

我想让这个警告保持沉默。当使用clang4时,有一个选项-Wno-c++1z扩展


但gcc无法识别此选项。

我已找到问题的根源

这是因为我用cmake设置了-std=c++17。我还包括了Qt5。Qt5设置重写了my-std=c++17。使用make VERBOSE=1,我可以看到-std=c++17和-std=c++14

这使编译器感到困惑


该问题与

有关,您不能使用
-std=c++1z
编译吗?请注意,如果您的代码使用c++17功能,则需要使用c++17编译器。显然,您可以通过指定
-std=c++1z
来实现这一点。只是试图使“警告”静音并不是一个好办法——把一种语言的编译器扔到另一种语言上,然后告诉编译器闭嘴所有它不理解的东西,这是一个坏主意。@VittorioRomeo我已经指定了-std=c++1z,警告不起作用away@skyking什么意思?我使用了gcc7,一个c++17编译器,并在构建命令行中指定了-std=c++1z?警告不会消失?是手动编译还是使用某些makefile/cmake/。。。?因为这类事情通常会导致要么编译选项没有实际到达编译器(CFLAGS vs cxflags等等),要么调用的编译器不是预期的编译器(坏的工具链文件,CC vs CXX,configure没有重新运行,等等)。您是否尝试在具有C++17功能的单个cpp文件上手动调用此编译器,并查看它是否仍然发出这些警告?有相同的问题,只是想添加一个问题,当您使用不同的值指定-std标志两次时,通常会发生这种情况,而不仅仅与QT有关。我猜这是在解析两个值中较小的一个。