[英]How to update to C++11?
我是编程新手,所以从未经历过语言更新。 随着C ++ 11的发布,我想利用所有新功能,如lambda表达式和线程。 我知道我可以使用外部库来执行此操作,但使用本机语言功能会更方便。
我在Xcode 3.2.6中的Mac OS X Snowleopard上使用gcc 4.2.1
我需要做什么以及更新以开始使用C ++ 11功能?
您可以更新到Xcode 4.1(或者您可以获得Snow Leopard的最新版本),并获得具有更多C ++ 11功能的新编译器。 Stack Overflow上有一些关于在Snow Leopard的Xcode 4.1中获得更好的C ++ 11支持的帖子。
但即使是Xcode提供的最新编译器也不支持lambda等一些C ++ 11功能。 要获得最佳的C ++ 11支持,您需要安装较新的编译器,gcc 4.6或4.7或Clang。
我经常从源代码构建最新版本的clang。 如果您熟悉构建其他开源软件,这并不难。 我使用git repos for clang和llvm, http://llvm.org/git/llvm.git
和http://llvm.org/git/clang.git
。 您还可以在其网站上找到有关入门的说明: http : //clang.llvm.org/get_started.html 。 一旦你有了clang和llvm的源代码,它就是./configure && make && sudo make install
。 (您可能希望在安装之前运行测试,因为这是直接在存储库之外。在make
之后执行llvm目录中的make check
,并且一旦将cd传递给tools / clang并运行make test
。如果一切正常则sudo make install
)
我不记得Snow Leopard是否包含了libc ++,所以你可能也需要这样做。 http://libcxx.llvm.org/
一旦构建和安装了所有内容,您就可以:
clang++ -std=c++11 -stdlib=libc++ main.cpp && ./a.out
你应该得到最好的C ++ 11支持。
clang中最近的补丁确实改进了对作为新C ++程序员可能会注意到的最后一些功能的支持。 还有一些零碎的东西,但从3.1开始,据我所知,clang具有gcc 4.7或VC ++ 11的所有C ++ 11特性以及更多功能。 libc ++在C ++ 11标准库特性IME方面也有最小的差距(虽然我认为VC ++的标准库一旦赶上语言特性也会非常完整,例如char32_t和char16_t作为本机类型,以便标准的强制专业化对于那些类型可以使用)。
如果你安装了自制软件,那么从这篇文章中只需两个步骤:
brew tap homebrew/dupes
brew install gcc --enable-cxx --enable-fortran --use-llvm
基本上,您只需要获得支持新功能的工具链。 在macosx中,可能是GCC或clang ++。 如果需要,您可能需要下载/编译特定版本(即,如果您要尝试的功能不在预先打包的编译器包中,但在存储库中可用)。
我从subversion下载并编译了最新的clang ++主干进行了一些测试,并在Snow Leopard中安装了带有macports的g ++ 4.6。 我记得我在设置环境时遇到了一些问题,但是不太清楚哪些编译器给了我问题或者我是如何解决它们的。 谷歌是你的朋友:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.