这个标题已经很明确了。我已经下载了Qt Creator 2.7.0,并且正在尝试编译一些基本的C++11代码:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
我收到了以下错误:
range based for loops are not allowed in c++ 98 mode
然而,根据这篇文章,这个版本的Qt Creator支持C++11。那么我该如何启用它?
这个标题已经很明确了。我已经下载了Qt Creator 2.7.0,并且正在尝试编译一些基本的C++11代码:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
x *= 2;
}
我收到了以下错误:
range based for loops are not allowed in c++ 98 mode
然而,根据这篇文章,这个版本的Qt Creator支持C++11。那么我该如何启用它?
CONFIG += c++11
QMAKE_CXXFLAGS += -std=c++11
(或 QMAKE_CXXFLAGS += -std=c++0x
)
将以下内容添加到您的.pro文件中
QMAKE_CXXFLAGS += -std=c++11
或者CONFIG += c++11
# With C++11 support
greaterThan(QT_MAJOR_VERSION, 4){
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}
将这些文件添加到我的项目文件中。当您不太关心团队中的人使用哪个Qt版本,但是您希望无论如何都启用C++11时,这非常方便。
添加到你的qmake文件中
QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS += -std=c++11
QMAKE_CXXFLAGS += -std=c++0x
我成功让它工作的唯一方法是在以下位置搜索:
...\Qt\{5.9; 或您的版本}\mingw{53_32; 或您的版本}\mkspecs\win32-g++\qmake.conf:
然后在该行处:
QMAKE_CFLAGS += -fno-keep-inline-dllexport
QMAKE_CFLAGS += -fno-keep-inline-dllexport -std=c++11