C++ 如何启用C++;Qt Creator中的11?

C++ 如何启用C++;Qt Creator中的11?,c++,qt,c++11,C++,Qt,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。那么如何启用它呢?将其添加到您的.pro文件中 QMA

标题是相当自我描述的。我已经下载了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。那么如何启用它呢?

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

QMAKE_CXXFLAGS += -std=c++11

据补充

CONFIG+=c++11

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


其他答案,建议

QMAKE\u cxflags+=-std=c++11
(或
QMAKE\u cxflags+=-std=c++0x


如果您使用的是早期版本的Qt(添加到您的qmake文件),还可以使用Qt4.8和gcc/clang。

QMAKE_CXXFLAGS+= -std=c++11
QMAKE_LFLAGS +=  -std=c++11

作为处理阿里出色回答中提到的两个案例的替代方案,我通常会补充

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

我的项目文件。如果您不太关心团队中使用的是哪个Qt版本,但您希望他们在任何情况下都启用C++11,那么这将非常方便。

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

…\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

Qt Creator不是编译器。当您读到“Qt Creator支持C++11”时,这意味着代码完成引擎(在本例中是叮当声)支持C++ 11语法。@ CMANETT85 85 QT创建者仍然不使用Clang作为C++语法分析器。有很多努力,但是Clang的API和这个解决方案的一般性能延迟了这个方向。当前的工作方向是这样。匿名的下票对任何人都没有帮助。问题是什么?问题是,我不能删除你的D。重复/不完整的答案,我所能做的就是对其进行向下投票。现在,您已经对其进行了编辑,使其更形象,我很高兴只进行向下投票。@nurettin感谢您的反馈。如果您仔细检查答案的编辑历史(我的和其他人的),你会发现我原来的答案不是重复的;实际上是另一个答案无耻地偷走了我的部分答案,使我的答案看起来像是重复的。今年又出现了两个重复的答案。请在编辑历史记录中亲自检查。有了这些信息,你会重新考虑你的否决票吗?@Troyseph我对这种情况的理解。我假设您正在使用gcc。如果gcc版本支持
-std=c++11
,那么它也应该支持(不推荐的)
-std=c++0x
标志,并且两个标志应该具有相同的效果(在您的机器上显然不是这样)。如果编译器支持
-std=c++0x
,这并不意味着它理解
-std=c++11
。因此,选择
-std=c++0x
作为c++11兼容模式的默认值是一个合理的选择。在我的机器上,至少根据手册页,
-std=c++0x
-std=c++11
是相同的。@Troyseph N哦,如果编译器支持的话,使用
-std=c++11
会更好,而且Qt可以聪明地这么做。好吧,如果这个问题对你有那么大的伤害,你可以提交一个bug报告……这应该是-std=c++11
QMAKE_CFLAGS           += -fno-keep-inline-dllexport
QMAKE_CFLAGS           += -fno-keep-inline-dllexport -std=c++11