我可以在Xcode中使用C ++ 11吗?

时间:2011-01-01 13:52:54

标签: c++ xcode gcc c++11 clang

我正在考虑在一些跨平台项目(Windows + Mac)中使用一些C ++ 11功能(例如auto)。在Windows上,Visual Studio支持即将推出的C ++ 11标准的一部分,这些标准允许我简化部分代码库,所以我很自然地会开始使用这些功能。

但据我所知,目前的XCode版本(3.2.4 + GCC 4.2)根本不支持任何C ++ 11功能。我可以以某种方式升级GCC版本或CLang版本吗?或者,我是否应该咬紧牙关,等待苹果公司将来某个时候打包一个新版本?

4 个答案:

答案 0 :(得分:74)

Xcode 4.2最终添加了对C ++ 0X的支持:

  1. 在项目构建设置屏幕中,启用“所有”选项。

  2. 在“构建选项”部分中,将编译器设置为“Apple LLVM编译器3.0”。

  3. 向下滚动到“Apple LLVM Compiler 3.0 - 语言”部分,将“C ++语言方言”设置为“C ++ 0X”,将“C ++标准库”设置为“libc ++”。

  4. 已知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)

Xcode使用GCC或Clang C ++编译器。这些编译器支持的任何功能都是公平游戏。 GCC的C ++兼容性页面为here,Clang C ++兼容性页面为here

答案 3 :(得分:0)

我发现auto,decltype(),基于范围的“for(:)”在跨平台项目中工作(适用于MacOSX,iOS,gcc / linux,MSVC 10 / windows的LLVM)。

lambdas&可变宏似乎不能在LLVM下工作,但遗憾的是。