【问题标题】:What is "ANSI C++"?什么是“ANSI C++”?
【发布时间】:2011-05-02 22:12:45
【问题描述】:

有人告诉我,C++98 在正式标准化为 ISO/IEC 14882:1998 之前是在 ANSI 下编写的。

我知道 ANSI 与 C 有关,但我似乎找不到太多证据证明“ANSI C++”这个短语非常准确。

  • “ANSI C++”是对 C++98 的良好描述吗?
  • “ANSI C++”是对 C++ 标准后续版本的良好描述吗?

【问题讨论】:

  • 很难选择这个问题的答案。很高兴看到它吸引了所有的 n0k-ers。 :)
  • 感谢您的所有回答。我想我很满意。 :)

标签: c++ standards c++98


【解决方案1】:

最初,在 89 年,C++ 的标准化由 ANSI X3J16 处理。从 91 年 ISO WG21 开始加入。您可能想阅读 BS 的 A History of C++:1979-1991。 IMO,“ANSI C++”只是一个剩下的名字;尽管 ANSI 间接参与了标准化,但语言是“ISO C++”。

【讨论】:

    【解决方案2】:

    这个gotw page就C++而言,简单描述了ANSI和ISO的关系:

    ISO 和美国委员会的正式名称是:

    ISO/IEC JTC1/SC22/WG21 - C++(ISO C++ 委员会)

    INCITS PL22.16 - C++(美国 C++ 委员会,通常称为“ANSI C++ 委员会”——尽管更准确地说,INCITS 是一个独立的组织,不是 ANSI 的一部分,但已获得 ANSI 的认可以制定美国标准) (以前称为 X3J16 和 J16)

    这两个团体通常以单数形式被称为“C++ 委员会”,因为他们会面并一起工作。会议总是同时在同一个房间里

    听起来这个委员会制定的 ISO 标准会自动成为美国标准,尽管我相信实际在这些委员会工作的人可以更好地解释。

    【讨论】:

    • 在大多数国家/地区,ISO 标准会自动成为国家标准(或国家机构的标准,取决于该国的组织方式)。因此,ISO C++ 也是 ANSI C++、BSI C++、DIN C++ 等。按照惯例,当它是 ISO 标准时,我们称其为 ISO,而不是根据我们所在的国家/地区更改名称。
    【解决方案3】:

    有点,但不是真的。没有,也从来没有单独的 C++ ANSI 标准。

    然而,当前的标准实际上是INCITS/ISO/IEC 14882-2003。自 2003 年起,INCITS 成为一个独立的 ANSI 认证组织。 INCITS 这个名字并不新鲜,但以前它是 ANSI 的一部分。在 2003 年,它是“spun off”作为一个独立的(但仍然是 ANSI 认可的)组织。因此,当前 (2003) 标准显示为 INCITS/ISO/IEC 标准,我相信即将发布的 (2011) 标准也将显示。

    【讨论】:

    • ...我一直以为是 BS/ISO/IEC 14882:2003 ;-)。
    • @Charles:关闭,但不完全。有一点不同:它是BS ISO/IEC 14882-2003。我不完全确定空格与斜线的含义。我的意思不是给予 INCITS 信用或类似的东西,而是指出根本没有提到“ANSI”,INCITS 现在是一个独立于 ANSI 的组织。 shop.bsigroup.com/en/ProductDetail/?pid=000000000030116778
    【解决方案4】:

    C++98 由一个国际委员会开发,该委员会是国际标准化组织 (ISO) 的一部分。 ANSI 和其他国家标准机构是该委员会的成员。该国际标准已被 ANSI 采用为美国国家标准,许多其他国家标准机构也同样采用。

    早期版本由 AT&T 在美国进行商业开发;我不确定 ANSI 是否涉及中间版本(编辑:但 Erik 的回答表明它是简单的)。

    “ANSI C++”是对 C++98 的一个很好的描述吗?

    如果很明显我在谈论当前标准,我会称它为“标准 C++”或“C++98”,或者只是“C++”。虽然在技术上是准确的,但“ANSI C++”可能会让那些没有意识到它的含义相同的人感到困惑,尤其是来自其他国家的人,他们可能不知道 ANSI 是什么。如果我把它称为“英国标准 C++”,我可能会觉得奇怪,这是一个同样准确的描述。

    “ANSI C++”是对 C++ 标准后续版本的良好描述吗?

    同样的答案。 C++ 标准由 ISO 制定,并被 ANSI 和其他机构采用。

    【讨论】:

    • 或反之亦然:最初的 C 标准是 ANSI C 1989。ISO 于 1990 年采用,它成为(具有不同的段落编号,但其他方面相同)ISO C 1990。C++ 标准是 ISO 从然而,开始。
    • @James:确实,C 的标准化遵循了不同的路线。当我在最后一句中说“标准”时,我指的是 C++ 标准,而不是一般的国际标准。
    【解决方案5】:

    AFAIK 当他们说“ANSI C++”时,他们的真正意思是“没有编译器特定的扩展”。

    【讨论】:

    • 对,但这并不能说明它有多准确。
    【解决方案6】:

    ISO 工作组创建标准。在 ISO 委员会(他们是同一个人)的主持下进行标准化之前,C++98 在美国(因为那里是 C++ 的诞生地,也是它的创造者居住的地方)在标准化方面做了很多工作。最终的 ISO 标准随后被 ANSI 和其他国家标准机构采用。

    我一直将标准 C++ 称为“标准 C++”。

    【讨论】:

    • Bjarne 是丹麦/英国人,C++ 是为他在英国撰写的博士论文而创建的。直到后来他才搬到美国。
    猜你喜欢
    • 2015-05-13
    • 2015-07-08
    • 2011-04-06
    • 2011-06-02
    • 2013-06-16
    • 1970-01-01
    • 2010-09-06
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多