2016-05-01 462 views
3

我在Debian Jessie上使用Qt5和Clang。爲了實驗的通用Lambda表達式,在.pro文件有:警告:'auto'類型說明符是一個C++ 11擴展[-WC++ 11-extensions]

CONFIG += c++14 

而且建成後我得到:

warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] 

爲了擺脫這種明顯的消息我做的:

QMAKE_CXXFLAGS += -Wc++11-extensions 

但我不斷收到明顯的訊息。爲什麼?如何隱藏它?

+0

不重複。另一個問題是關於如何在Qt Creator中啓用C++ 14,我使用'CONFIG + = C++ 14'(在Windows中測試,工作正常)。 – KcFnMi

+0

通常只有當您處於pre-C++ 11模式時纔會啓用此警告,因此我懷疑您的CONFIG選項實際上不起作用 –

回答

7

你想要QMAKE_CXXFLAGS += -Wno-c++11-extensions我懷疑。

clang compiler documentation

相關部分:

-Wfoo:啓用警告foo

-Wno-foo:禁用警告foo

+0

您是否有參考答案?我在這裏看不到任何效果。 – KcFnMi

+0

我不這樣做,只是以我的經驗,你需要把'禁止'來壓制警告 – Jfevold

+0

Yout忘了''','-Wno-C++ 11-extensions'這樣做。 – KcFnMi

9

根據QMAKE的資源庫的歷史,CONFIG += c++14節在QMAKE 5.4版新增:https://codereview.qt-project.org/#/c/87831/

然而,似乎Debian的傑西只有QMAKE版本5.3(https://packages.debian.org/jessie/qt5-qmake

作爲一種變通方法,您可以使用

QMAKE_CXXFLAGS += -std=c++14 

QMAKE_CXXFLAGS += -std=gnu++14 
+0

'QMAKE_CXXFLAGS + = -std = C++ 1y'也可以在這裏使用(在Jessie中)。你直接去了這一點。有趣的是,在Windows上,我使用'CONFIG + = C++ 14',它不能被任何「替代」節替代 – KcFnMi