86

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

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

4

4 回答 4

76

Xcode 4.2 终于增加了对 C++0X 的支持:

  1. 在项目构建设置屏幕中,打开“全部”选项。

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

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

已知 std::move()、移动构造函数和 R-Value 引用按预期工作,我正在测试 std::thread 和 std::atomic。

于 2011-10-17T09:40:07.277 回答
9

======= 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 编写和维护编译器插件。

您还可以指定自定义脚本,但维护起来很痛苦……除非您全力以赴并创建一个适配器工具。

于 2011-01-02T00:08:05.933 回答
1

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

于 2011-01-01T19:09:22.770 回答
0

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

可悲的是,lambda 和可变参数宏似乎无法在 LLVM 下工作。

于 2011-11-27T04:51:01.283 回答