首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows环境下的C++11

Windows环境下的C++11
EN

Stack Overflow用户
提问于 2013-08-13 15:14:06
回答 7查看 21.9K关注 0票数 22

我想知道用C++11编写软件在Windows上工作得有多好。使用Windows的本机编译器之一将是最舒适的(也可能是最自然的)--我在这里考虑的是Visual 2012 Express或Visual 2013 Express。到目前为止,我在这件事上所能找到的一切

  1. http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx ( VC10和VC11的C++11特性比较,这似乎很糟糕)
  2. http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl-features-fixes-and-breaking-changes-in-vs-2013.aspx (不太透明,没有给我一个好的想法)

现在的Visual版本能很好地处理C++11,有谁有经验吗?我真的很想现在就开始使用auto、lambdas、各种模板、模板别名、初始化程序列表和rvalue引用(仅举几个例子)和所有其他好东西,但是如果C++03可能是一个问题,我可能不得不进一步使用它。

另一种可能是在Windows上安装LLVM和Clang。我的主要平台是OSX,在那个系统上,Clang对C++11的支持非常好。但我读到,C++标准库(libc++)的LLVM版本在Windows上不能很好地工作。因此,LLVM/clang可能不是一种选择。

您对Windows上的C++11开发有什么看法?

谢谢!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 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++上,结果却把它破坏了一些地方,崩溃了,或者变得几乎无法维护。
  • CTP中的多样性支持非常糟糕,虽然的编译器版本有所改进,但在符合标准的复杂变量和模板表达式( GCC和Clang中编译得很好)方面,它仍然相当糟糕。
  • =delete=default现在已经远离VC++了;在充满希望的不久的将来,它可能会成功(根据路线图,它应该很快就会实现)(我不得不为许多简单的类显式地实现r值构造函数,一直到8类继承层次结构。这是最糟糕的一记耳光,当我看着GCC和Clang的用户用=default免费获得我所有的硬编码作品)。
  • 作为一个支撑(主要是因为Windows代码和一些二进制兼容性),VC++中的空基类光学化不起作用。不要期望您的类层次结构大小或成员布局至少要进行优化(在打包变量类型时,请注意您在std::tuple中的排序)。

这是关于我到目前为止接触到的所有挫折。它们是可以工作的--我每天都要和它们一起工作--但是如果你想要得到C++的支持,你应该跳到GCC或者Clang身上,让它在你的机器上工作。

未来的

如果您真的想要C++11,您需要等待大约一年,即使这样,Visual 2013发布的VC++仍然会缺少一些特性(也不要期望它们没有问题)。2013年的VC++还将在许多地方严重缺少std::move和显式r值支持,当你期望事情成功时,这会让人痛苦。

警告

如果您不是一个强大的Vim用户,在涉及到您可以使用的IDE(与GDB/GCC或Clang很好地合作)时,您的选项就不多了。

  • QtCreator很好,与MinGW一起工作,并且通常功能齐全,足以完成工作。
  • 可以使用崇高的文本,但是您必须编写自己的建筑系统,或者将其委托给其他的东西。
  • 代码:块的自动完成不稳定,行为怪异,IDE本身感觉笨重。
  • Eclipse应该是好的,但我的经验是笨重和奇怪的,有奇怪的输入滞后的时间(尽管8.00 GB的i7哈斯韦尔机器使用SSD)。
  • ,作为一个IDE,是相当坚实的。然后在上面堆叠视觉辅助X,这对于C++编码来说是非常好的。这确实是我继续坚持下去的唯一原因,但我已经在学习Vim方面取得了进展,所以当时机成熟时,我可以完全抛弃Visual。

关于图书馆

VC++中的库支持是相当完整的(因为它们的坏编译器允许它们完成)。它有regex,而大多数其他库都没有regex支持。但这并不意味着VC++ 库很好地使用了它声称的一些C++11特性。 (melak47图片)。

如果您想让您知道的代码在Windows100%下工作,在剩下的时间里,您可能想要针对VC++进行编程。另一个“好处”是,您用VC++编写的代码是您可以使用的C++/C++11的最小子集,因此它最终应该在任何地方编译。当然,这违背了使用漂亮的C++11并享受它的想法,所以.明智地挑选你的毒药。

票数 43
EN

Stack Overflow用户

发布于 2013-08-13 15:33:20

VC的C++11支持还远未完成,但它确实包含了最重要的面向用户的功能。

还有另一件事。根据我的经验,在Windows上安装MinGW或Clang很好,但是您会有一些不便,因为几乎没有人为这些编译器预编译用于Windows的二进制文件(而很多人为Visual预编译二进制文件)。

此外,据我所知,没有比Visual更高级的Windows环境用于图形调试、智能感知之类的东西。当我尝试Code::Blocks时,现实地说,它只是不起作用。

票数 11
EN

Stack Overflow用户

发布于 2013-08-13 15:33:59

您可以看到这里来全面比较编译器对C++11语言特性的支持。下面是关于VS的C++11/14路线图的一些信息。

MSVC落后于其他主要的C++编译器,但它仍然得到了对许多最重要特性的支持。

  • 自动引用、lambda引用和rvalue引用都可以从VS10获得。IIRC有一个带有rvalue引用的警告,编译器不会生成移动构造和移动赋值操作符。
  • 各种模板和初始化程序列表可在VS2013预览中使用,包括库支持。
  • 类型混叠(即带有using关键字的类型)预计将在VS 2013年RTM中提供。

如果不需要与VS生成的二进制文件进行互操作,那么安装另一个编译器(如GCC )是可行的。我知道Clang也可以在混合环境中工作,使用libstdc++而不是libc++。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18212873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档