我想知道用C++11编写软件在Windows上工作得有多好。使用Windows的本机编译器之一将是最舒适的(也可能是最自然的)--我在这里考虑的是Visual 2012 Express或Visual 2013 Express。到目前为止,我在这件事上所能找到的一切
现在的Visual版本能很好地处理C++11,有谁有经验吗?我真的很想现在就开始使用auto、lambdas、各种模板、模板别名、初始化程序列表和rvalue引用(仅举几个例子)和所有其他好东西,但是如果C++03可能是一个问题,我可能不得不进一步使用它。
另一种可能是在Windows上安装LLVM和Clang。我的主要平台是OSX,在那个系统上,Clang对C++11的支持非常好。但我读到,C++标准库(libc++)的LLVM版本在Windows上不能很好地工作。因此,LLVM/clang可能不是一种选择。
您对Windows上的C++11开发有什么看法?
谢谢!
发布于 2013-08-13 15:44:05
我只能给您我作为一名开发人员的经验,因为我一直在使用VisualC++在Windows上构建最前沿的C++,同时还安装了其他几个编译器和IDE(包括在2012、2012 CTP和2013年预览版上构建Clang本人)。以下是我的经验,直到现在(2013年8月13日),是基于赫伯·萨特的谈话的,每天与编译器一起工作。
快速
在Visual / VC++的相反方向运行。对C++11的支持很慢,相对于Clang和GCC,他们目前在编译器特性方面处于崩溃状态。
现在的
Visual ++的C++11 (和C++14支持)现在已经超越了深渊,它们缺乏强大的特性,使得C++中的模板元编程非常棒(特别是using表达式)。
using将优秀的using代码移植到VC++上,结果却把它破坏了一些地方,崩溃了,或者变得几乎无法维护。=delete和=default现在已经远离VC++了;在充满希望的不久的将来,它可能会成功(根据路线图,它应该很快就会实现)(我不得不为许多简单的类显式地实现r值构造函数,一直到8类继承层次结构。这是最糟糕的一记耳光,当我看着GCC和Clang的用户用=default免费获得我所有的硬编码作品)。std::tuple中的排序)。这是关于我到目前为止接触到的所有挫折。它们是可以工作的--我每天都要和它们一起工作--但是如果你想要得到C++的支持,你应该跳到GCC或者Clang身上,让它在你的机器上工作。
未来的
如果您真的想要C++11,您需要等待大约一年,即使这样,Visual 2013发布的VC++仍然会缺少一些特性(也不要期望它们没有问题)。2013年的VC++还将在许多地方严重缺少std::move和显式r值支持,当你期望事情成功时,这会让人痛苦。
警告
如果您不是一个强大的Vim用户,在涉及到您可以使用的IDE(与GDB/GCC或Clang很好地合作)时,您的选项就不多了。
关于图书馆
VC++中的库支持是相当完整的(因为它们的坏编译器允许它们完成)。它有regex,而大多数其他库都没有regex支持。但这并不意味着VC++ 库很好地使用了它声称的一些C++11特性。 (melak47图片)。
和
如果您想让您知道的代码在Windows100%下工作,在剩下的时间里,您可能想要针对VC++进行编程。另一个“好处”是,您用VC++编写的代码是您可以使用的C++/C++11的最小子集,因此它最终应该在任何地方编译。当然,这违背了使用漂亮的C++11并享受它的想法,所以.明智地挑选你的毒药。
发布于 2013-08-13 15:33:20
VC的C++11支持还远未完成,但它确实包含了最重要的面向用户的功能。
还有另一件事。根据我的经验,在Windows上安装MinGW或Clang很好,但是您会有一些不便,因为几乎没有人为这些编译器预编译用于Windows的二进制文件(而很多人为Visual预编译二进制文件)。
此外,据我所知,没有比Visual更高级的Windows环境用于图形调试、智能感知之类的东西。当我尝试Code::Blocks时,现实地说,它只是不起作用。
发布于 2013-08-13 15:33:59
您可以看到这里来全面比较编译器对C++11语言特性的支持。下面是关于VS的C++11/14路线图的一些信息。
MSVC落后于其他主要的C++编译器,但它仍然得到了对许多最重要特性的支持。
using关键字的类型)预计将在VS 2013年RTM中提供。如果不需要与VS生成的二进制文件进行互操作,那么安装另一个编译器(如GCC )是可行的。我知道Clang也可以在混合环境中工作,使用libstdc++而不是libc++。
https://stackoverflow.com/questions/18212873
复制相似问题