【问题标题】:Microsoft C++ Language ReferenceMicrosoft C++ 语言参考
【发布时间】:2010-04-13 21:24:08
【问题描述】:

每当提出任何问题并需要参考文本时,我都不会看到 MSDN C++ Language Reference 被提及。

我正在浏览它,我个人觉得它写得非常好。

它没有像标准那样经常使用是否有某些特定原因?

是不是因为它包含了一些 VC++ 特有的特性?

【问题讨论】:

  • 这不是近距离投票,而是迁移到元投票。
  • @Hans Passant:我不同意。直到 G++(实际上是 MinGW)能够有效地支持 Windows 上的 Unicode,大多数 Windows 程序员都会继续避免它。考虑到 Windows 占消费应用市场的 90% 以上,假设 G++ 可能不是这里的原因。 G++ 是 Unixen 和朋友的优秀编译器,但在实现 Unicode 之前我不会考虑在 Windows 上使用它。
  • 为什么人们投票将其移至元?这是一个关于 C++ 和语言参考文本的问题。
  • @Billy:不,它没有。 SO 上的人们这样做是因为 C++ 的原因,而不是因为 SO 政策的原因。我看到不理解这个问题的人可能会认为它与 SO 政策有关,因此属于元数据。但问题(和正确答案)与 C++ 无关。他问的原因只是对SO的一个观察。
  • @Billy:正如所写,这是一个问题,即为什么 SO 上的人们更喜欢一个参考。但他并没有询问 SO 政策,他询问是因为 SO 是他观察到这一现象的地方。如果他说他在 gamedev.net 上注意到人们倾向于在 MSDN 上引用 ISO 标准,那么您会说这是关于游戏编程而不是 C++ 的问题吗?当然不是。他在问为什么 C++ 专家以他们的方式回答 C++ 问题。答案基于 C++,仅此而已。这是一个 C++ 问题,仅此而已。

标签: c++ c standards coding-style msdn


【解决方案1】:

我相信这是因为我们这些参考参考的人参考了实际标准本身。

【讨论】:

  • 虽然实际标准还没有上线,但是目前和下一个标准的草案都在
  • 这个。如果您想要 C++ 的权威来源,请使用 ISO 14882:2003。 MSDN 可能可靠,也可能不可靠,但它不具有权威性。
  • @Derrick Turk:这个 ISO 14882:2003 C++ 标准不是免费的!我没想到会这样。
  • @eSKay:是的。不过它相当便宜,我认为 ANSI 的 18 美元(或 30 美元,不记得了,通过工作得到了我的)。仅供参考,草稿可从 open-std.org 免费获得,并且在采用 '03 标准之前的草稿应该是 Pretty Darn Close (tm)。
  • 各种标准文档的链接:stackoverflow.com/questions/81656/…
【解决方案2】:

答案很简单:MSDN 参考并不权威。它告诉您 Microsoft 的编译器的行为方式,是的,它通常恰好与标准所说的一致。但是当有人问 C++ 语言如何处理某些情况时,只有 一个 文本有任何权威:ISO 标准。

所以在回答有关 C++ 的问题时,人们倾向于参考标准。 如果您特别询问 MSVC 如何实现它,那么 MSDN 将是一个完全有效的来源。但大多数问题都只是关于 C++。

或者换一种说法:如果 MSDN 包含拼写错误,那么 MSDN 就是错误的。如果 ISO 标准包含错字,那么这就是语言的定义方式。

【讨论】:

    【解决方案3】:

    MS 非常清楚文档的哪些部分是特定于 MS 的,所以我同意 MS 参考非常好(特别是如果您对 MS 扩展感兴趣)。

    如果我要查找有关“什么是标准”的信息,我通常会参考标准文档,因为:

    1. 我有(请参阅 Where do I find the current C or C++ standard documents? 获取如何获取的链接)
    2. 我发现它们是 PDF,比基于 Web 或基于 Windows 帮助的 MSDN 文档更易于搜索和阅读
    3. 它们是确定性的(就回答有关标准的问题而言)

    最大的缺点是我还没有C90标准的电子版..

    【讨论】:

      【解决方案4】:

      Is it because it contains some VC++ specific features?

      我认为这是根本原因。例如,它通常包含有关 C++/CLI 的信息,而不仅仅是 C++。

      VC++ 2010 参考,我认为,在区分哪个部分在 C++ 中以及哪个部分在 C++/CLI 中时非常小心。但是要参考标准,当然还是参考标准本身更好。 VC++ 文档也经常引用该标准。

      【讨论】:

        【解决方案5】:

        一个有趣的例子:看看那些__XXX keywords!! (C++ 标准没有)

        【讨论】:

        • @Rooke:嗯……令人困惑。虽然页面确实在顶部显示Names with leading underscores are Microsoft extensions.
        • 这是因为标准为实施者保留了它们...(_xyz 和 __xyz)
        • @conio: _xyz 只保留在全局命名空间中。
        • @Dennis:如果你想要精确(也称为“挑剔”),它们在全局命名空间和 ::std 命名空间中都保留,除非下划线后面的第一个字母是大写字母字母 - 在这种情况下,它们被保留在任何地方(§17.4.3.1.2)。在任何情况下,Rooke 都提到了以两个下划线开头的关键字,并且这些关键字始终保留在任何地方。
        • 只是为了好玩,IBM keywordsSun C++ documentation(您必须在 PDF 中搜索下划线)、Intel C++ for Windows keywords 等等...
        【解决方案6】:

        C++ 标准定义了 C++ 语言的工作方式,Microsoft C++ 语言参考定义了微软对该语言的实现方式。

        因此,如果您想知道独立于编译器可以保证哪些行为,标准是您的指南。一些细节和某些极端情况留待实现定义,每个实现都可以定义语言的扩展,所以如果你想使用那些 MSCV 特定属性,微软的语言参考应该解释它们。

        关于 C++ 的大多数 SO 问题都没有明确要求特定于 MSVC 的答案,这可能不适用于其他编译器。因此,参考标准给出了一个通用的、独立于编译器的答案,而 MS 语言参考对于 MSVC 以外的任何东西都没有太大的影响。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-01
          • 1970-01-01
          • 2023-03-13
          • 1970-01-01
          • 2018-04-24
          相关资源
          最近更新 更多