如何更新到C++ 11?

fdh*_*fdh 16 c++ unix macos gcc c++11

我是编程新手,所以从未经历过语言更新.随着C++ 11的发布,我想利用所有新功能,如lambda表达式和线程.我知道我可以使用外部库来执行此操作,但使用本机语言功能会更方便.

我在Xcode 3.2.6中的Mac OS X Snowleopard上使用gcc 4.2.1

我需要做什么以及更新以开始使用C++ 11功能?

bam*_*s53 24

您可以更新到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.(您可能需要运行安装前测试,因为这是直接从仓库中.后makemake check的LLVM目录中,一旦通过CD到工具/铛和运行make test.如果一切正常,然后sudo make install)

我不记得Snow Leopard是否包含了libc ++,所以你可能也需要这样做.http://libcxx.llvm.org/

一旦构建和安装了所有内容,您就可以:

clang++ -std=c++11 -stdlib=libc++ main.cpp && ./a.out
Run Code Online (Sandbox Code Playgroud)

你应该得到最好的C++ 11支持.

clang中最近的补丁确实改进了对作为新C++程序员可能会注意到的最后一些功能的支持.还有一些零碎的东西,但从3.1开始,据我所知,clang具有gcc 4.7或VC++ 11的所有C++ 11特性以及更多功能.libc ++在C++ 11标准库特性IME方面也有最小的差距(虽然我认为VC++的标准库一旦赶上语言特性也会非常完整,例如char32_t和char16_t作为本机类型,以便标准的强制专业化对于那些类型可以使用).