我正在考虑在一些跨平台项目(Windows + Mac)中使用一些C ++ 11功能(例如auto
)。在Windows上,Visual Studio支持即将推出的C ++ 11标准的一部分,这些标准允许我简化部分代码库,所以我很自然地会开始使用这些功能。
但据我所知,目前的XCode版本(3.2.4 + GCC 4.2)根本不支持任何C ++ 11功能。我可以以某种方式升级GCC版本或CLang版本吗?或者,我是否应该咬紧牙关,等待苹果公司将来某个时候打包一个新版本?
答案 0 :(得分:74)
Xcode 4.2最终添加了对C ++ 0X的支持:
在项目构建设置屏幕中,启用“所有”选项。
在“构建选项”部分中,将编译器设置为“Apple LLVM编译器3.0”。
向下滚动到“Apple LLVM Compiler 3.0 - 语言”部分,将“C ++语言方言”设置为“C ++ 0X”,将“C ++标准库”设置为“libc ++”。
已知std :: move(),移动构造函数和R-Value引用按预期工作,我正在测试std :: thread和std :: atomic。
答案 1 :(得分:8)
======= 2012年更新:=======
从Clang开始 - Clang现在提供了许多C ++ 11功能。它包含在Xcode中。
======= 2011年1月的原始答案:=======
英特尔的编译器可能是目前最干净的方法。 http://software.intel.com/en-us/articles/intel-composer-xe/clang很有前途,但不是特别稳定或具有wrt c ++ 0x功能。 c ++对于clang来说仍然是一个新的东西。
gcc:相对成熟,但你必须为xcode编写和维护你的编译器插件。
你也可以指定自定义脚本,但这很难维护...除非你全力以赴创建一个适配器工具。
答案 2 :(得分:1)
答案 3 :(得分:0)
我发现auto,decltype(),基于范围的“for(:)”在跨平台项目中工作(适用于MacOSX,iOS,gcc / linux,MSVC 10 / windows的LLVM)。
lambdas&可变宏似乎不能在LLVM下工作,但遗憾的是。