繁体   English   中英

如何更新到C ++ 11?

[英]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.githttp://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM