有人告诉我,C++98 在正式标准化为 ISO/IEC 14882:1998 之前是在 ANSI 下编写的。
我知道 ANSI 与 C 有关,但我似乎找不到太多可以证明短语“ANSI C++”非常准确的方法。
- “ANSI C++”是对 C++98 的一个很好的描述吗?
- “ANSI C++”是对 C++ 标准后续版本的一个很好的描述吗?
最初,在 89 年,C++ 的标准化由 ANSI X3J16 处理。从 '91 ISO WG21 开始加入。您可能想阅读 BS 的A History of C++:1979-1991。IMO,“ANSI C++”只是一个剩下的名字;即使 ANSI 间接参与标准化,该语言也是“ISO C++”。
就 C++ 而言,此gotw 页面描述了 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 标准自动成为了美国标准,虽然我相信那些真正在这些委员会工作的人可以更好地解释。
C++98 由一个国际委员会开发,该委员会是国际标准化组织 (ISO) 的一部分。ANSI 和其他国家标准机构是该委员会的成员。该国际标准已被 ANSI 采用为美国国家标准,许多其他国家标准机构也采用该标准。
早期版本由 AT&T 在美国进行商业开发;我不确定 ANSI 是否涉及中间版本(编辑:但 Erik 的回答表明它是简单的)。
“ANSI C++”是对 C++98 的一个很好的描述吗?
我会称它为“标准 C++”,或“C++98”,或者只是“C++”,如果很明显我在谈论当前的标准。虽然在技术上是准确的,但“ANSI C++”可能会让那些没有意识到它的含义相同的人感到困惑,尤其是来自其他国家的人,他们可能不知道 ANSI 是什么。如果我称它为“British Standard C++”,我可能会觉得奇怪,这是一个同样准确的描述。
“ANSI C++”是对 C++ 标准后续版本的一个很好的描述吗?
一样的答案。C++ 标准由 ISO 开发,并被 ANSI 和其他机构采用。
有点,但不是真的。没有,也从来没有单独的 C++ ANSI 标准。
然而,当前的标准实际上是INCITS/ISO/IEC 14882-2003。自 2003 年起,INCITS 成为一个独立的 ANSI 认证组织。INCITS 这个名字并不新鲜,但以前它是 ANSI 的一部分。2003 年,它被“分拆”为一个独立的(但仍获得 ANSI 认证的)组织。因此,当前的(2003 年)标准显示为 INCITS/ISO/IEC 标准,我相信即将推出的(2011 年)标准也将如此。
ISO 工作组创建标准。在 ISO 委员会(他们是同一个人)的主持下进行标准化之前,C++98 在美国(因为那里是 C++ 的诞生地,也是它的创造者居住的地方)在标准化方面做了很多工作。最终的 ISO 标准随后被 ANSI 和其他国家标准机构采用。
我一直将标准 C++ 称为“标准 C++”。
AFAIK 当他们说“ANSI C++”时,他们的真正意思是“没有编译器特定的扩展”。