NO IMAGE

        做C語言開發的人,經常會遇到“ANSI C”、“ISO C”與“Standard C”三種術語,經常會讓人傻傻分不清楚。博主之前按也是搞不清三者的關係,於是某天下定決心,一定要搞清楚三者的關係,先百度上搜下。下面是在百度百科上搜尋關鍵字“ANSI C”得到的結果:

================================分割線========================================

http://baike.baidu.com/link?url=FoJHIvLITdB_GREiD9WeXz9arPgM3ELJQp2OfeNZ3d71yi5KtAeyTMlzAszBDagNnvemTmWeRdqwBqSvoyHhVTliXemum49Zmyi8yZiAALm

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標準了。看來一般是每隔10年就會釋出一個新標準啊。
       有了標準,那麼編寫跨平臺的程式碼就容易多了。具備跨平臺的程式碼需要如下兩個條件滿足:
       1.程式碼中沒有依賴針對具體硬體的程式碼;

       2.編譯器要支援C標準;

       這樣在A硬體平臺上寫的程式碼,無需或者只需做極小的改動,經過編譯器的編譯,就可以移植到B硬體平臺上了。