簡體   English   中英

“ANSI C”或“ANSI C ++”今天仍然意味着什么嗎?

[英]Does “ANSI C” or “ANSI C++” still mean something today?

上次我檢查過,說你在ANSI C編碼等於說“這是符合C99標准的代碼而沒有別的東西”。 現在有了C11和C ++ 11,這種區別仍然存在嗎? 它還有某種含義嗎?

歷史上,“ANSI C”用於表示“標准C”,即C89,與“K&R C”和編譯器 - 編寫者發明的各種預標准變體形成對比。 這就是第二版的原因。 “C編程語言”的封面上有一個大的紅色“ANSI C”標記。

然后一段時間“ISO C”用於表示“新標准C”,即C99,與“ANSI C”形成對比。

這總是令人困惑的用法,因為ISO和ANSI都批准了C89和C99。 ISO批准了前者作為C90,並在ANSI版本中發布了一些布局變化,但據稱具有相同的實質內容。 因此“ANSI C”始終是ISO標准,“ISO C”始終是ANSI標准。 唯一的區別是哪個機構監督標准化過程。

遵循這種用法(並可能鼓勵它繼續),GCC的-ansi標志等同於-std=c90 它的上下文實際上意味着“C90,加上一些不與標准沖突的GNU擴展”。

我不知道“ANSI C”指的是C99,但這並不意味着它沒有被用來表示。

我不認為使用術語“ANSI C”在過去十年中幫助過任何人。 ANSI批准了C11,但開始說“啊哈!在這種情況下,ANSI C突然現在意味着C11!”就沒有用了。 我們當然可以說C11是當前的ANSI C標准,但是術語“ANSI C”不能用於任何合理的期望,人們會清楚地將其理解為C11。

ISO C11和ISO C ++ 11都已被批准為新的ANSI C和C ++標准。

例如,在我的C11的ANSI副本上寫道:

INCITS(國際信息技術標准委員會)作為美國國家標准通過。 ANSI批准日期:2012年5月23日

由於目前廣泛使用了C標准的13個不同版本和C ++版本的“兩個半”,我認為今天這樣的術語比以往任何時候都沒有意義。


  1. 實際上,在給定時間,只有一個“當前”C(C ++)標准,最后一個,因為它取代了以前的版本。 我在這里說的是,所有這些以前的版本仍然非常相關(通常超過最新版本)。

暫無
暫無

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

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