代码之家  ›  专栏  ›  技术社区  ›  Michael F

符合标准的Visual C++标准[关闭]

  •  14
  • Michael F  · 技术社区  · 15 年前

    我想知道微软的VisualC++编译器是否符合到目前的C(C90/C99)和C++(ISO/IEC 1488∶2003)标准。不幸的是,我只能找到关于这个主题的部分信息,我可能在看所有错误的地方。

    任何有关资源的建议都会受到赞赏。事先谢谢。

    编辑: 因为看起来这是一个最敏感的话题,我会满意地回答MS/VC是否完全符合C90……我已经了解到C99(自然)不是这样的,我仍然没有关于C++的线索。

    编辑2: 感谢大家的回答。我接受了拉沙科夫先生的回答,但对所有相关的回答都投了反对票,这都是有益的。

    7 回复  |  直到 12 年前
        1
  •  14
  •   Mark Rushakoff    15 年前

    也许 MSDN's Nonstandard Behavior page 对于Visual C++会启发你吗?一定要看看你最感兴趣的版本(右边的框)。

    由于msdn的链接一直在变化(谁知道为什么),下面是vs2008页面的主要内容,因此当链接断开,有人看到这个答案时,他们可以谷歌搜索并找到正确的页面:

    非标准行为

    以下主题是 已知地方的Visual C++ C++的实现不一致 用C++标准编写的。断面 编号参考中的章节编号。 C++标准。

        2
  •  5
  •   Konrad Rudolph    15 年前

    我的宠儿皮皮,大多数程序员觉得不重要,但我个人发现它伤害了可读性很多,是VC++无法编译下面的C++代码:

    bool result = true and not false;
    

    _,因为VC++无法识别 and , or not (连同ISO 646的其余部分)作为有效令牌。

    澄清 :该标准在_§2.12中提到了上述令牌的处理,将其标记为_§2.11中的保留标记,并在_§2.5中定义了它们与更传统的运算符表示(例如 对应于 && )不清楚他们为什么会在其他关键字旁边获得特殊状态。更令人困惑的是,附录C2.2突然将它们称为“关键词”。尽管如此,标准对它们的处理和语义还是非常清楚的。VC只是不实现这些段落(除非您指定 /Za 编译期间的标志)。

        3
  •  3
  •   t0mm13b    12 年前

    这里有一个很好的总结 MSDN blog 题为 Visual C++ 11中C++ 11的特点 “更新时间为2012年3月2日。

        4
  •  2
  •   Matt Joiner    15 年前

    Visual C++ 2K3、2K5和2K8,符合C89和C++ 98。

    一些额外的特性是从C99中挑选出来的,并且在C++ 98的顶部有一些改进。

        5
  •  2
  •   dirkgently    15 年前

    C和C++的标准符合性很差,随着2005的事情开始发生变化,并且越来越好。VS2010是我真正看到的,有很多来自C++0x的特性。但是,大多数时候,我会用下面的关键词来搜索谷歌:

    • msdn-ansi-c一致性
    • MSDN ISO C++一致性

    等等,当我真的需要弄明白为什么有些东西不能按定义工作时。

        6
  •  2
  •   AnT stands with Russia    15 年前

    我还没有使用vs 2008,所以我只能说vs 2005。

    它不支持C99。对C89/90的支持在VC中一直很好,我不知道它有任何不合规问题。

    C++ 98的支持有很多问题,其中一些问题是MS已知的问题,有些是简单的错误。我制作了一个博客条目,用于在实践中遇到的各种VS 2005 C++错误的“笔记本”。如果你愿意,你可以看看 here 尽管这个列表可能还远未完成

        7
  •  2
  •   Mandrake    15 年前

    _ Try标记为扩展名