视觉C ++标准的符合性[关闭](Visual C++ standards compliance [

2019-08-22 23:41发布

我在想,如果,和到什么程度,是否微软的Visual C ++编译器符合当前C(C90 / C99)和C ++(ISO / IEC 14882:2003)标准。 不幸的是,我只能够找到关于这个问题,我看到的可能是错误的地方的部分信息。

到相关资源的任何指针赞赏。 提前致谢。

编辑:既然是看起来这是一个最敏感的问题,我会满足于一个是/ MSVC上是否完全符合C90没有答案......我来理解,这不是对C99的情况下(自然),我仍然没有关于C ++的线索..

EDIT2:谢谢大家的答案。 我已经接受Rushakov先生的回答,但upvoted所有相关的答案,这都是有帮助的。

Answer 1:

也许MSDN的非标准行为页的Visual C ++会启发你? 请确保你看看你最感兴趣的(在右侧框)的版本。

由于MSDN的链接更改所有的时间(谁知道为什么),这里是从VS2008页面的主要内容,所以当链路中断,有人遇到这样的回答,他们可以谷歌和找到正确的页面:

非标准行为

以下主题是已知的一些地方,在Visual C ++实现C ++的不与C ++标准一致的。 该部分的数字表示各部分的编号在C ++标准。

  • 编译器限制
  • 10.3(第5段)共变返回类型
  • 14模板出口关键字
  • 14.6.2从属名称
  • 15.4函数异常说明符
  • 16.3.2#操作
  • 21.1.1性格特征要求
  • 对象的存储位置


Answer 2:

我的眼中钉,大部分程序员觉得不重要,但我个人觉得伤害可读性很多,是VC ++无法编译下面的C ++代码:

bool result = true and not false;

......因为VC ++不识别andornot作为有效的令牌(符合ISO 646的其余部分一起)。

澄清 :标准提到上述令牌的治疗中§2.12,如在§2.11保留和在§2.5限定为他们更常规操作者的表示的等价映射(例如将其标记and对应于&& )。 为什么他们让旁边的其他关键字一个特殊的地位目前尚不清楚。 更令人混淆,附录C2.2突然称他们为“关键字”。 不过,标准是他们的待遇和语义绝对清晰。 VC根本没有实现这些段落(除非指定/Za编译时标志)。



Answer 3:

下面是在一个很好的总结MSDN博客 “ 在Visual C ++ 11 C ++ 11功能 ”这是更新2012年3月2日标题。



Answer 4:

视觉C ++ 2K3,2K5,2K8和,顺应C89和C ++ 98。

一些额外的功能是樱桃采摘从C99,并有上的C ++ 98顶部有一些改进。



Answer 5:

符合标准为C和C ++已经比较差了VS. 事情始于2005年发生变化,越来越好。 VS2010就是我真正关注的是与相当多的从C ++ 0x特性的。 大多数虽然时间,我结束了以下关键字谷歌搜索:

  • MSDN ANSI C标准
  • MSDN ISO C ++一致性

等我真的真的需要弄清楚为什么定义的东西不起作用。



Answer 6:

我不使用VS 2008,所以我只能为2005 VS说话。

它不支持C99。 对C89 / 90支持VC一向不错,我不知道有任何不合规问题。

C ++ 98载体具有一些问题,其中一些是由MS为已知问题和一些是纯的错误。 我做了一个博客条目的“记事本”的各种VS 2005 C ++的错误我在实践中遇到的使用。 如果你愿意,你可以看看这里 ,虽然这份名单可能是远未完成



Answer 7:

__try被标记为一个扩展



文章来源: Visual C++ standards compliance [closed]