警告:'auto'类型说明符是C++ 11扩展[-Wc ++ 11-extensions]

KcF*_*nMi 4 c++ qt c++11 qt5 c++14

我在Debian Jessie上使用Qt5和Clang.要试验泛型lambda,在.pro文件中有:

CONFIG += c++14
Run Code Online (Sandbox Code Playgroud)

建成之后我得到了:

warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
Run Code Online (Sandbox Code Playgroud)

为了摆脱这个明显的信息我做了:

QMAKE_CXXFLAGS += -Wc++11-extensions
Run Code Online (Sandbox Code Playgroud)

但我一直得到明显的信息.为什么?如何隐藏它?

Joh*_*ulé 13

根据qmake的存储库历史记录,该CONFIG += c++14节在qmake版本5.4中添加:https://codereview.qt-project.org/#/c/87831/

但是,似乎Debian Jessie只有qmake版本5.3(https://packages.debian.org/jessie/qt5-qmake)

作为一种解决方法,您可以使用

QMAKE_CXXFLAGS += -std=c++14
Run Code Online (Sandbox Code Playgroud)

要么

QMAKE_CXXFLAGS += -std=gnu++14
Run Code Online (Sandbox Code Playgroud)


小智 8

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

clang编译器文档

相关部分:

-Wfoo:启用警告foo.

-Wno-foo:禁用警告foo.