[英]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 ++版本的“兩個半”,我認為今天這樣的術語比以往任何時候都沒有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.