本博客文章合集:本博客文章合集
做C語言開發的人,經常會遇到“ANSI C”、“ISO C”與“Standard C”三種術語,經常會讓人傻傻分不清楚。博主之前按也是搞不清三者的關系,于是某天下定決心,一定要搞清楚三者的關系,先百度上搜下。下面是在百度百科上搜索關鍵字“ANSI C”得到的結果:
================================分割線===================
ANSI C_百度百科
1.C 的第一個標準是由ANSI發布的。雖然這份文檔后來被國際標準化組織(ISO)采納并且ISO發布的修訂版也被ANSI采納了,但名稱ANSI C(而不是 ISO C)仍被廣泛使用。一些軟件開發者使用ISO C,還有一些使用 Standard C。
2.C89
1983年,美國國家標準協會(ANSI)組成了一個委員會,X3J11,為了創立 C 語言的標準。經過漫長而艱苦的過程,該標準于1989年完成,并在作為ANSI X3.159-1989 "Programming Language C"正式生效。因為這個標準是1989年發布的,所以一般簡稱C89標準。有些人也把C89標準叫做ANSI C,因為這個標準是美國國家標準協會(ANSI)發布的。
3.C90
在1990年,ANSI C89標準被國際標準化組織(ISO)和國際電工委員會(IEC)采納為國際標準,名叫ISO/IEC 9899:1990 - Programming languages -- C[2] ,有些人簡稱C90標準。因此,C89和C90通常指同一個標準,一般更常用C89這種說法。
4.C99
在2000年3月,國際標準化組織(ISO)和國際電工委員會(IEC)采納了第二個C語言標準,名叫ISO/IEC 9899:1999 - Programming languages -- C,簡稱C99標準。[3]
5.C11
在2011年12月,國際標準化組織(ISO)和國際電工委員會(IEC)采納了第三個C語言標準,名叫ISO/IEC 9899:2011 - Information technology -- Programming languages -- C,簡稱C11標準。它是C程序語言的最新標準。
================================分割線================
我來分析下這5點的含義。
從第1點來看,剛開始美國自己的標準協會ANSI給C語言定義了一套標準,我取名叫C標準1。國際標準化組織ISO看到了,眼紅了,就把C標準1拿來瞧了瞧,跟ANSI說“不錯,蠻牛逼的,但是有幾個地方還不完善啊,這樣,我來修改下”。于是ISO修改了一些地方,然后也發布了一個標準,我取名叫C標準2吧。ANSI一看,喲,老兄幫我修改了下,不錯嘛,那我也接受,于是ANSI與ISO就承認這個C標準2了。但是ANSI的fans還是把C標準2念成ANSI C標準,ISO的fans就把C標準2念成ISO C標準,既不是ANSI的fans也不是ISO的fans就把C標準2念成Standard C。
從第2點來看,剛開始ANSI制定了C標準,這一制定就耗費了6年時間,終于在89年發布了,所以就叫C89標準了,也就是我取名的C標準1;
從第3點來看,在90年的時候,ISO等組織采納了C89標準,然后做了一些修改再發布,就變成C90標準了,也就是我取名的C標準2;
從第4點來看,到了2000年,ISO可能又修改了C90標準,并且發布新標準,就叫C99標準了;
從第5點來看,到了2011年,ISO可能又修改了C99標準,并且發布新標準,就叫C11標準了??磥硪话闶敲扛?0年就會發布一個新標準啊。
有了標準,那么編寫跨平臺的代碼就容易多了。具備跨平臺的代碼需要如下兩個條件滿足:
1.代碼中沒有依賴針對具體硬件的代碼;
2.編譯器要支持C標準;
這樣在A硬件平臺上寫的代碼,無需或者只需做極小的改動,經過編譯器的編譯,就可以移植到B硬件平臺上了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。