我可以在Xcode中使用C ++ 11吗?
我正在考虑在一些跨平台项目(Windows + Mac)中使用一些C ++ 11function(例如auto
)。 在Windows上,Visual Studio支持即将到来的C ++ 11标准的一部分,这将允许我简化部分代码库,所以很自然地我会对开始使用这些特性感兴趣。
但据我所知,目前的XCode版本(3.2.4 + GCC 4.2)完全不支持任何C ++ 11function。 我可以以某种方式升级GCC版本或CLang版本吗? 还是应该咬我的舌头,等待苹果在未来某个时候打包新版本?
Xcode 4.2终于增加了对C ++ 0X的支持:
-
在项目构build设置屏幕中,打开“全部”选项。
-
在“生成选项”部分中,将编译器设置为“Apple LLVM编译器3.0”。
-
向下滚动到“Apple LLVM Compiler 3.0 – 语言”部分,并将“C ++语言方言”设置为“C ++ 0X”和“C ++标准库”为“libc ++”。
std :: move(),移动构造函数和R值引用已知按预期工作,并且我正在testingstd :: thread和std :: atomic。
======= 2012年更新:=======
从Clang开始 – Clang中现在提供了许多C ++ 11function。 它包含在Xcode中。
=======从2011年1月的原始答案:=======
英特尔的编译器可能是目前最干净的方式。 http://software.intel.com/en-us/articles/intel-composer-xe/
铿锵有前途,但不是特别稳定或function的RTF C ++ 0xfunction。 铿锵的c ++还是很新的。
gcc:相对成熟,但是你必须编写和维护xcode的编译器插件。
你也可以指定自定义脚本,但是这是一个很难维护…除非你全力以赴创build一个适配器工具。
Xcode使用GCC或Clang C ++编译器。 这些编译器支持的任何function都是公平的游戏。 GCC的C ++兼容性页面在这里 ,Clang C ++兼容性页面在这里 。
我发现auto,decltype(),基于范围的“for(:)”在跨平台项目(LLVM for MacOSX,iOS,gcc / linux,MSVC 10 / windows)中工作。
lambdas&variadicmacros似乎不能在LLVM下工作,但遗憾的是。