作C語言開發的人,常常會遇到「ANSI C」、「ISO C」與「Standard C」三種術語,常常會讓人傻傻分不清楚。博主以前按也是搞不清三者的關係,因而某天下定決心,必定要搞清楚三者的關係,先百度上搜下。下面是在百度百科上搜索關鍵字「ANSI C」獲得的結果:
.net
================================分割線========================================orm
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.C11get
在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標準了。看來通常是每隔10年就會發佈一個新標準啊。
有了標準,那麼編寫跨平臺的代碼就容易多了。具有跨平臺的代碼須要以下兩個條件知足:
1.代碼中沒有依賴針對具體硬件的代碼;io
2.編譯器要支持C標準;編譯
這樣在A硬件平臺上寫的代碼,無需或者只需作極小的改動,通過編譯器的編譯,就能夠移植到B硬件平臺上了。form