171

The title is pretty self-descriptive. I've downloaded Qt Creator 2.7.0, and I am trying to compile some basic C++11 code:

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}

I'm receiving the following error:

range based for loops are not allowed in c++ 98 mode

Yet, according to this article this version of Qt Creator supports C++11. So how do I enable it?

4

6 回答 6

264

根据这个网站添加

CONFIG += c++11

到您的 .pro 文件(请参阅该网页的底部)。它需要 Qt 5。


其他答案,建议

QMAKE_CXXFLAGS += -std=c++11(或QMAKE_CXXFLAGS += -std=c++0x

也适用于Qt 4.8 和 gcc / clang。

于 2013-06-05T21:18:45.243 回答
33

将此添加到您的.pro 文件中

QMAKE_CXXFLAGS += -std=c++11

或者

CONFIG += c++11
于 2013-06-05T19:42:58.313 回答
18

作为处理阿里出色答案中解决的两种情况的替代方法,我通常会添加

# With C++11 support
greaterThan(QT_MAJOR_VERSION, 4){    
CONFIG += c++11
} else {
QMAKE_CXXFLAGS += -std=c++0x
}

到我的项目文件。当您不太关心团队中人们使用哪个 Qt 版本,但您希望他们在任何情况下都启用 C++11 时,这会很方便。

于 2015-04-15T15:41:22.600 回答
8

添加到您的 qmake 文件

QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS +=  -std=c++11
于 2014-03-14T19:59:58.450 回答
4

如果您使用的是早期版本的 QT (<5) 试试这个

QMAKE_CXXFLAGS += -std=c++0x
于 2014-03-10T15:19:44.817 回答
1

我成功使它工作的唯一地方是通过搜索:

...\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
于 2017-06-08T02:18:20.440 回答