我正在考虑auto
在某些跨平台项目(Windows + Mac)中使用某些C ++ 11功能(例如)。在Windows上,Visual Studio支持即将到来的C ++ 11标准的某些部分,这将使我能够简化部分代码库,因此自然而然地,我将有兴趣开始使用这些功能。
但是据我所知,当前的XCode版本(3.2.4 + GCC 4.2)根本不支持任何C ++ 11功能。我可以以某种方式升级GCC版本或CLang版本吗?还是我应该只咬一口舌头,等待苹果在将来的某个时候打包新版本?
我正在考虑auto
在某些跨平台项目(Windows + Mac)中使用某些C ++ 11功能(例如)。在Windows上,Visual Studio支持即将到来的C ++ 11标准的某些部分,这将使我能够简化部分代码库,因此自然而然地,我将有兴趣开始使用这些功能。
但是据我所知,当前的XCode版本(3.2.4 + GCC 4.2)根本不支持任何C ++ 11功能。我可以以某种方式升级GCC版本或CLang版本吗?还是我应该只咬一口舌头,等待苹果在将来的某个时候打包新版本?
Answers:
Xcode 4.2终于添加了对C ++ 0X的支持:
在项目构建设置屏幕中,打开“所有”选项。
在“构建选项”部分,将编译器设置为“ Apple LLVM编译器3.0”。
向下滚动到“ Apple LLVM编译器3.0-语言”部分,并将“ C ++语言方言”设置为“ C ++ 0X”,将“ C ++标准库”设置为“ libc ++”。
已知std :: move(),move构造函数和R值引用可以按预期工作,并且我正在对std :: thread和std :: atomic进行测试。
GNU++0X
的选择C++ Language Dialect
和libstdc++
供选择C++ Standard Library
?什么时候使用它们?
/Developer/About\ Xcode.pdf
,是的,它说支持C ++ 11,但是当我使用-std=gnu++0x
它时,它会吐出来cc1plus: error: unrecognized command line option "-std=0x++"
!我应该clang++
改用吗?
clang++
在编译时使用,而不是g++
,这就是为什么g++
在命令行中尝试使用C ++ 11时会失败的原因(因为古老的g++
XCode不支持它)。仅供参考。
=======更新2012:=======
从Clang开始-Clang现在提供了许多C ++ 11功能。它包含在Xcode中。
======= 2011年1月的原始答案:=======
Intel的编译器可能是目前最干净的方法。 http://software.intel.com/zh-CN/articles/intel-composer-xe/
clang很有前途,但不是特别稳定或具有wrt c ++ 0x功能。对于clang来说,c ++还是很新的。
gcc:相对成熟,但是您必须编写和维护xcode的编译器插件。
您还可以指定自定义脚本,但这很难维护...除非全力以赴并创建适配器工具。
我发现跨平台项目(适用于MacOSX,iOS,gcc / linux,MSVC 10 / windows的LLVM)的自动,decltype(),基于范围的“ for(:)”工作。
可悲的是,lambdas和可变参数宏在LLVM下似乎不起作用。