什么是“ANSI C++”?

11

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

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

  • “ANSI C ++”是否适合描述C ++ 98?
  • “ANSI C ++”是否适合描述后续版本的C ++标准?

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

15

最初,C++的标准化是由ANSI X3J16处理的,在1991年ISO WG21加入了。您可能需要阅读BS的C++历史:1979-1991。在我看来,“ANSI C ++”只是一个遗留的名称;即使ANSI间接参与了标准化,该语言也被称为“ISO C ++”。


6
这个gotw页面简要介绍了ANSI和ISO在C++方面的关系:
ISO和美国委员会的正式名称是: ISO/IEC JTC1/SC22/WG21 - C++ (ISO C++委员会) INCITS PL22.16 - C++ (美国C++委员会,通常称为“ANSI C++委员会” - 尽管更准确地说,INCITS是一个独立于ANSI但由ANSI认可开发美国标准的组织)(以前称为X3J16和J16)
这两个团体常常被合称为“C++委员会”,因为它们一起开会并完成工作。 会议总是在同一时间同一房间举行。
听起来像是这个委员会制定的ISO标准自动成为美国标准,尽管我相信真正在这些委员会工作的人能够更好地解释。

6
在大多数国家,ISO标准自动成为国家标准(或者是由该国家组织机构制定的标准)。因此,ISO C++也同时是ANSI C++、BSI C++、DIN C++等等。通常情况下,当它是ISO标准时,我们称之为ISO,而不是按照所在国家改变名称。 - James Kanze

2
“有点儿,但又不完全是。并没有,也从来没有一个单独的ANSI标准适用于C ++。”
“然而,当前的标准实际上是INCITS/ISO/IEC 14882-2003。从2003年起,INCITS成为一个独立的ANSI认可组织。INCITS这个名称并不新鲜,但此前它一直是ANSI的一部分。在2003年,它被“分离”为一个独立的(但仍然是ANSI认可的)组织。因此,目前(2003年)的标准显示为INCITS/ISO/IEC标准,我相信即将发布的(2011年)标准也是如此。”

我一直认为它是 BS/ISO/IEC 14882:2003,哈哈。 - CB Bailey
@Charles:接近了,但还不太对。有一个小区别:它是BS ISO/IEC 14882-2003。我不太确定空格和斜杠的区别有多大。我的重点并不是要给INCITS以荣誉或其他什么,而是要指出“ANSI”根本没有被提到,而INCITS现在是与ANSI分开的组织。http://shop.bsigroup.com/en/ProductDetail/?pid=000000000030116778 - Jerry Coffin

2
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和其他机构采纳。

1
或者反过来说:原始的C标准是ANSI C 1989。在1990年被ISO采纳后,它成为了(段落编号不同,但内容相同的)ISO C 1990。然而,C++标准从一开始就是ISO标准。 - James Kanze
@James:确实,C语言的标准化走了不同的路线。当我在最后一句话中说“标准”时,我指的是C++标准,而不是一般的国际标准。 - Mike Seymour

1
据我所知,当他们说“ANSI C++”时,实际上是指“没有编译器特定的扩展”。

2
对,但这并不说明它有多精确。 - Lightness Races in Orbit

1
ISO工作组创建了标准。C++98在美国进行了大量的标准化工作(因为那是C++的诞生地,也是创造者所居住的地方),然后将标准化工作纳入了ISO委员会的管理范围(而这个委员会的成员与之前的创造者相同)。最终的ISO标准随后被ANSI和其他国家标准机构采纳。
我一直将标准C++称为"标准C++"。

2
Bjarne是丹麦/英国人,C++是他在英国撰写博士论文时创建的。直到后来他才移居美国。 - Lightness Races in Orbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接