簡體   English   中英

什么是“ANSI C++”?

[英]What is “ANSI C++”?

有人告訴我,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++”。

這個gotw頁面描述了ANSI和ISO就C++而言的關系,簡要說明:

ISO 和美國委員會的正式名稱是:

ISO/IEC JTC1/SC22/WG21 - C++(ISO C++委員會)

INCITS PL22.16 - C++ (the US C++ committee, often called the "ANSI C++ committee" -- although more accurately INCITS is a separate organization that is not a part of ANSI but is accredited by ANSI to develop US standards) (previously called X3J16 和 J16)

這兩個團體通常以單數形式被稱為“C++ 委員會”,因為他們會面並一起工作。 會議總是同時在同一個房間

聽起來這個委員會制定的 ISO 標准自動成為了美國標准,雖然我相信那些真正在這些委員會工作的人可以更好地解釋。

有點,但不是真的。 C++ 沒有,也從來沒有單獨的 ANSI 標准。

然而,當前的標准實際上是INCITS/ISO/IEC 14882-2003 自 2003 年起,INCITS 成為一個獨立的 ANSI 認證組織。 INCITS 這個名字並不新鮮,但以前它是 ANSI 的一部分。 2003 年,它被“ 分拆”為一個獨立的(但仍獲得 ANSI 認證的)組織。 因此,當前的(2003 年)標准顯示為 INCITS/ISO/IEC 標准,我相信即將推出的(2011 年)標准也將如此。

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 和其他機構采用。

AFAIK 當他們說“ANSI C++”時,他們的真正意思是“沒有編譯器特定的擴展”。

ISO 工作組創建標准。 在 ISO 委員會(他們是同一個人)的主持下進行標准化之前,C++98 在美國(因為這是 C++ 的創建地,以及它的創建者居住的地方)在標准化方面做了很多工作。 最終的 ISO 標准隨后被 ANSI 和其他國家標准機構采用。

我一直將標准 C++ 稱為“標准 C++”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM