我继续读约C99和C++11和所有这些完全是甜的东西,越来越增加的语言标准可能会被很好的使用的一天。然而,我们目前煎熬的土地写C++在Visual Studio.

将任何新的东西在标准不断得到加visual studio,或是Microsoft更多的有兴趣在增加新C#变这么做吗?

编辑:此外,以接受的答案,我发现了视觉C++队的博客:

http://blogs.msdn.com/vcblog/

具体地说,这个职位:

http://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspx

非常有用的。谢谢!

有帮助吗?

解决方案

MS对此有一系列的公开回复,其中大多数都指责他们的用户。像这样:

http:// blogs。 msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx

  

现在,Visual C ++编译器团队偶尔会收到关于我们为什么没有实现C99的问题。它真的基于我们用户的兴趣。在我们收到许多针对某些C99功能的请求的地方,我们已经尝试实现它们(或类似物)。一些示例是可变参数宏, long long __ pragma __ FUNCTION __ __ restrict 。如果您有其他C99功能在您的工作中发现有用,请告诉我们!我们没有从C用户那里听到太多信息,所以请大声说出来让自己听到

http://connect.microsoft.com/VisualStudio/feedback/ ViewFeedback.aspx?FeedbackID = 345360

  

嗨:不幸的是,我们从大多数用户那里得到的压倒性的反馈是他们更希望我们专注于C ++ - 而不是C-99。我们有“樱桃采摘”。某些流行的C-99功能(可变参数宏, long long )但除此之外我们不太可能在C-99空间中做更多的事情(至少在短期内)。

     

Jonathan Caves

     

Visual C ++编译器团队。

这是一个非常悲惨的事态,但如果你怀疑MS想要锁定用户,这也是有道理的:它很难将现代的基于gcc的代码移植到MSVC中,至少我觉得非常痛苦。

但是存在一种解决方法:请注意,英特尔对此更为开明。英特尔C编译器可以处理C99代码甚至与gcc具有相同的标志,使得在平台之间移植代码变得更加容易。此外,英特尔编译器适用于visual studio。因此,通过废弃MS COMPILER,您仍然可以使用您认为具有某种价值的MS IDE,并使用C99来表达您的内心。

更明智的做法是诚实地转移到Intel CC或gcc,并将Eclipse用于您的编程环境。跨越Windows-Linux-Solaris-AIX-etc的代码的可移植性在我的经验中通常很重要,不幸的是,MS工具完全不支持。

其他提示

草Sutter是两主席和一个非常活跃的成员C++就获得标准化,以及软件的建筑师在Visual Studio为微软。

他是在作者的新C++存储器模型标准化C++0x.例如,下列文件:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2669.htm
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2197.pdf

有他的名字。所以我猜列入Windows C++0x是有保证的长H.萨特仍然是Microsoft。

作为C99只是部分包括在Visual Studio,我猜这是一个问题的优先事项。

  • 最有趣的C99功能已经存在C++(内联、可变的宣言》的任何地方,//评论,等等。) 而且很可能已经使用在C Visual Studio(如果只是在做C码在C++编译器).看到我的回答 在这里, 为了更全面讨论有关C99设在C++。
  • C99增加之间的分歧C和C++通过添加功能已经存在C++,但在一个不兼容的方式(对不起,但是 布尔 复杂的实施在C99是可笑的,在最好的...看看 http://david.tribble.com/text/cdiffs.htm 更多信息)
  • C社区在窗户似乎不存在或没有足够重要的是承认
  • C++社会上的窗户似乎太重要到可以忽略
  • .净是Microsoft希望人们的程序。这意味着C#VB.NET也许C++/CLI。

因此,我将以Microsoft,为什么我会实现的功能,很少有人会时使用的同样的功能已经在提供更多的社区活跃的语言已经使用的大多数人?

结论呢?

C++0x将被包括在内,作为扩展的VS2008年或者在下一代(代?) Visual Studio.

C99特点不是已经实施不会在下一年,除非另有一些戏剧性情况(国家完整的C99开发商的出现突然冒出来?)

编辑2011-04-14

显然,"国家完整的C99开发"已经存在: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6415401
^_^

然而,最后的评论: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6828778 显然足够了,我猜。

编辑2012-05-03

药萨特说得很清楚:

  1. 我们的主要目标是支持"的大多数C99/C11这是一个子集的ISO C++98/C++11."
  2. 我们还由于历史的原因船C90编译器,接受(仅)C90和不C++
  3. 我们不打算支持ISO C功能,是不是部分的任C90或异C++。

该博客增加联系和进一步解释这些决定。

资料来源: http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/

VC2013预览1 开始,C99,支持更多样化的C ++ 11和一些新引入的C ++ 14标准。查看官方博客了解更多详情: http://blogs.msdn.com/b/vcblog/archive/2013/06/27/what-s-new-for-visual-c-developers-in -vs2013-preview.aspx

<强>更新

来自 https://news.ycombinator.com/item?id=9434483 (Stephan T Lavavej又名:STL是STL @VC团队的维护者):

  

具体来说,2015年我们的C99标准库实现已完成,但tgmath.h(在C ++中无关)和CX_LIMITED_RANGE / FP_CONTRACT pragma宏除外。

查看此帖子了解详情: http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015 -rc.aspx

我参与了ISO C ++工作(2000-2005),微软为该语言做出了重要贡献。毫无疑问,他们将使用C ++ 0x,但他们需要比英特尔更多的时间。 Micosoft必须处理通常使用其专有扩展的更大代码库。这简单地使得更长的测试时间。然而,他们最终将支持大部分C ++ 0x(导出仍然不被喜欢,或者我理解)。

对于ISO C,从事标准工作的人员并不代表微软市场。微软客户可以使用C ++ 98,如果他们只是在寻找更好的C.那么为什么微软会花钱购买C99呢?当然,微软挑选了部分产品,但这是理智的业务。无论如何,他们需要那些C ++ 0x,为什么要等?

很遗憾,MSVC对C的支持非常缺乏。它只支持C99中作为C ++子集的部分...这意味着,例如,在MSVC中编译ffmpeg或其libav *库在物理上是不可能的,因为它们使用许多C99功能,例如命名的struct元素。由于libavcodec还需要一个维护堆栈对齐的编译器,MSVC不会这样做,这会变得更糟。

我在x264上工作,与ffmpeg 不同,努力支持MSVC,尽管这样做本身往往是一场噩梦。即使您通过显式的基于程序集的堆栈对齐函数显式传递最高函数调用,它也不会保持堆栈对齐,因此必须禁用所有需要对齐堆栈的函数。它也非常烦人,我也不能使用vararrays;也许这是最好的,因为显然海湾合作委员会大规模地使他们在表现方面感到悲观。

关于MSVC 2010年和2011年MSVC C ++ 11功能兼容性的最新帖子是现在在线

Microsoft从来没有表示任何真正的兴趣保持了最快速度的c99标准(这是越来越老,现在).可悲C程序员,但我怀疑,Microsoft关心的C++的社区。

Visual C ++ 2008 SP1至少包含TR1的部分内容,并且Visual C ++团队不时会在博客或谈论C ++ 0x,所以我猜他们会在该功能的某个时候支持它。虽然我没有看到任何正式的内容。

更新信息:

还有现在(10月2008年)"社区技术预览"(CTP)VS2010其中包含的预览VC10有 一些 部分C++0x实施(请注意,VC10将不会有全套C++0x变化实现的,甚至当VC10被释放):

http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&displaylang=en

一些细节上有什么新的VC10CTP:

正如在上文中,"视觉C++编译器在Visual Studio2010年九月的社区技术预览(现金转拨方案)包含用于支持四C++0x语言功能,即:"

  • lambda,
  • 汽车,
  • static_assert,
  • rvalue引用

Herb Sutter是ISO C ++标准组织的主席,也适用于Microsoft。我不知道Visual Studio C标准 - 主要是因为我从不使用普通的C - 但微软肯定会尝试推进新的C ++标准。有证据表明 - 就像OregonGhost提到的那样 - 最新的Visual Studio Service Release中包含的TR1。

Visual C ++团队确实推出了一个C ++ 0x功能表,2010版本支持这些功能 http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c -0x核心语言的功能,在-VC10最table.aspx 。由于规范和实现之间可能存在滞后时间,因此这看起来非常合理。维基百科有一篇关于规范的好文章。在我写这篇文章的时候还没完成。

视C++Bloq提供了很多信息在几个interesing点有关的支持C++11VC++11,包括几个表格

  • C++11个核心语言功能
  • C++11个核心语言特点:并发
  • C++11个核心语言特点:C99
  • x86容器的大小(Bytes)
  • 64容器的大小(Bytes)

视觉C++队的博客、C++11功能在视觉C++11

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top