Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Visual Studio支持新的C/C++;标准?_C++_Visual Studio_Visual C++_C++11_C99 - Fatal编程技术网

C++ Visual Studio支持新的C/C++;标准?

C++ Visual Studio支持新的C/C++;标准?,c++,visual-studio,visual-c++,c++11,c99,C++,Visual Studio,Visual C++,C++11,C99,我一直在读关于C99和C++11以及所有这些被添加到语言标准中的非常美妙的东西,这些东西将来可能会很好地使用。然而,我们目前在Visual Studio中编写C++的领域感到憔悴。 标准中的任何新东西是否会被添加到VisualStudio中,或者微软是否对添加新的C#变体更感兴趣 编辑:除了接受的答案,我发现VisualC++团队博客: 具体来说,这篇文章: 非常有用。谢谢 微软从未表示过对跟上c99标准(现在已经过时)的速度有任何真正的兴趣。对于C程序员来说,很悲哀,但我怀疑微软对C++社

我一直在读关于C99和C++11以及所有这些被添加到语言标准中的非常美妙的东西,这些东西将来可能会很好地使用。然而,我们目前在Visual Studio中编写C++的领域感到憔悴。 标准中的任何新东西是否会被添加到VisualStudio中,或者微软是否对添加新的C#变体更感兴趣

编辑:除了接受的答案,我发现VisualC++团队博客:

具体来说,这篇文章:


非常有用。谢谢

微软从未表示过对跟上c99标准(现在已经过时)的速度有任何真正的兴趣。对于C程序员来说,很悲哀,但我怀疑微软对C++社区的关心更多。

VisualC++ 2008 SP1至少包含了Tr1的一部分,并且不时地,Visual C++团队正在写博客或谈论C++ 0x,所以我猜他们会在这个时候在某个时候支持它。不过,我没有看到任何官方消息。

微软对此有一系列公开回复,其中大多数都指责用户。像这个:

现在,VisualC++编译器团队偶尔会问到为什么我们没有实现C99。这实际上是基于用户的兴趣。当我们收到许多关于某些C99功能的请求时,我们尝试实现它们(或类似的功能)。几个例子是可变宏、

long-long
\uuuu-pragma
\uuuu-FUNCTION
\uu-restrict
。如果有其他C99功能,你会发现在你的工作有用,让我们知道!我们没有从我们的C用户那里听到太多,所以说出来,让别人听到

嗨:不幸的是,我们从大多数用户那里得到的绝大多数反馈是,他们更希望我们关注C++-0x而不是C-99。我们已经“精心挑选”了某些流行的C-99功能(可变宏,
long
),但除此之外,我们不太可能在C-99领域做更多的工作(至少在短期内)

乔纳森洞穴

Visual C++编译团队。< /P> 这是一种非常令人伤心的情况,但如果你怀疑微软想要锁定用户,这也是有道理的:这使得将基于gcc的现代代码移植到MSVC非常困难,至少我觉得这非常痛苦

不过,存在一种变通方法:请注意,英特尔在这方面要开明得多。“英特尔C编译器”可以处理C99代码,甚至具有与gcc相同的标志,使在平台之间移植代码变得更加容易。此外,“英特尔编译器”也可以在visual studio中工作。因此,通过废除MS编译器,您仍然可以使用您似乎认为具有某种价值的MS IDE,并使用C99来满足您的需求


一种更明智的方法是诚实地转向Intel CC或gcc,并在编程环境中使用Eclipse。代码在Windows Linux Solaris AIX等中的移植性通常在我的经验中是重要的,不幸的是,MS工具不支持。

< P>萨特是ISO C++标准体的主席,也是为微软工作的。我不知道VisualStudio C标准——主要是因为我从来不使用纯C -但是微软肯定要推动新的C++标准向前发展。这是一个类似于OrrangouHuST的证据——包括在最新的VisualStudio服务发布中的Tr1。

< P>萨特是主持人C++的一个非常活跃的成员,也是VisualStudio为微软的软件架构师。 <>他是C++ C++ 0X标准化内存模型的作者之一。例如,以下文件:


上面有他的名字。因此,我想只要H.Sutter留在微软,就可以保证在Windows上包含C++0x

至于仅部分包含在VisualStudio中的C99,我想这是一个优先级问题

  • 最有趣的C99特性已经出现在C++(内联、变量声明、任何/注释等)中,并且可能已经在VisualStudio中的C中使用(如果只在C++编译器中执行C代码)。关于C++中C99特性的更全面的讨论,请参阅我的答案。
  • <99)通过添加C++中已经存在的特征,但以不兼容的方式(CUCH,但C99中的布尔复杂实现是可笑的,最多见……),增加了C和C++之间的分歧。
  • Windows上的C社区似乎不存在或不够重要,不值得承认
  • Windows上C++社区似乎太重要了不容忽视
  • .NET是微软希望人们在Windows上编程的方式。这意味着C#,VB.NET,可能是C++/CLI
那么,如果我是微软,为什么我要实现一些很少有人会使用的功能,而这些功能已经在大多数人已经使用的更活跃的社区语言中提供了呢

结论? C++0x将作为VS 2008的扩展或Visual Studio的下一代(几代?)包含在内

除非发生戏剧性的事情(一个到处都是C99开发人员的国家不知从哪里冒出来?),否则尚未实现的C99功能将不会在未来几年内实现

编辑2011-04-14 显然,“C99开发者之国”已经存在:
^_^

不过,我想最后一句话:已经够清楚了

编辑2012-05-03 赫伯·萨特明确表示:

  • 我们的主要目标是支持“大部分C99/C11,它是ISO C++98/C++11的子集。”
  • 出于历史原因,我们还提供了一个C90编译器,它只接受C90而不接受C++
  • <>我们不打算支持不是C90或ISO C++的一部分的ISOC特征。 这篇博文为这些决定添加了链接和进一步的解释


    来源:

    不幸的是,MSVC对C的支持非常缺乏。它只支持C99的一部分,它是C++的子集…也就是说