2017-03-15 46 views
1

我自建的gcc 7尝试一些新的C++ 17种功能。如何沉默gcc警告对抗c + + 17功能?

当我构建代码时,我看到了上百行警告,并说只有在-std = C++ 1z时(我已经在构建命令行中指定了-std = C++ 1z,而我也试过gnu ++ 1z)

我想缄默这个警告。当使用铛4时,有一个选项-Wno-C++ 1z-extensions

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

+4

'-std = C++ 1z'? –

+2

请注意,如果您的代码使用C++ 17层的功能,你需要使用C++编译器17。显然你可以通过指定'-std = C++ 1z'来完成。为给大家沉默“警告”是不是要走的路 - 这是一个坏主意,抛出一个编译器在另一种语言一种语言,只是告诉编译器闭嘴一切不理解。 – skyking

+0

@VittorioRomeo我已经指定-std = C++ 1Z,警告不会消失 –

回答

4

我有根造成我的问题的原因。

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

这使编译器感到困惑。

问题不能用你编制关于https://gitlab.kitware.com/cmake/cmake/issues/16468

+0

有同样的问题,只是想补充说,一般情况下,当你指定-std标志两次不同的值,而不仅仅是与QT有关。我想它是解析两个值中的较小者。 – Dado