MacOS - Xcode中使用C ++ 11

发布时间 2023-12-27 16:57:30作者: [BORUTO]

Can I use C++11 with Xcode?

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

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

  • 看看这里和那里的答案。
  • 要获得更积极的结果,请查看:stackoverflow.com/questions/837992/update-gcc-on-osx
  • 优秀的链接!
  • 关于Clang:我相信它最近获得了合理的C ++ 03支持,但C ++ 0x仍然是一个很远的目标。 例如,对可变参数模板的支持正在进行中,并且尚未实现移动语义/右值引用。
  • Variadic模板对我来说很好用clang。

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。

  • @ RichardLiu,C++ Language Dialect的GNU++0X选项和C++ Standard Library的libstdc++选项怎么样? 什么时候使用它们?
  • 我看过DeveloperAbout\ Xcode.pdf并且是的,它说支持C ++ 11,但是当我使用-std=gnu++0x时它会吐出cc1plus: error: unrecognized command line option"-std=0x++"! 我应该使用clang++吗?
  • @errordeveloper,到目前为止我只在Xcode IDE中成功编译了C ++ 11。 我不知道如何在命令行或makefile中启用C ++ 11。 抱歉。
  • @RichardLiu:XCode在编译时通常使用clang++,而不是g++,这就是为什么在尝试从命令行使用g++时C ++ 11支持失败的原因(因为古老的g++ XCode让你不支持它)。 仅供参考。
  • 我仍然得到nullptr_t错误:-(

======= 2012年更新:=======

从Clang开始 - Clang现在提供了许多C ++ 11功能。它包含在Xcode中。

======= 2011年1月的原始答案:=======

intel的编译器可能是目前最干净的方法。
http://software.intel.com/en-us/articles/intel-composer-xe/

clang很有前途,但不是特别稳定或具有特定的wrt c ++ 0x功能。 c ++对于clang来说仍然是一个新的东西。

gcc:相对成熟,但你必须为xcode编写和维护你的编译器插件。

你也可以指定自定义脚本,但这很难维护......除非你全力以赴创建一个适配器工具。

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