2017-03-15 50 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