C語言的三套標準:C89、C99和C11

我們今天使用的 Windows、Linux、Mac OS 等操作系統都是由一種叫做 Unix 的系統演化而來。Unix 作爲80年代主流的操作系統,是整個軟件工業的基礎,是現代操作系統的開山鼻祖,C語言就是爲 Unix 而生的。

Unix 和C語言的開發者是同一人,名字叫丹尼斯·裏奇(Dennis MacAlistair Ritchie)。
在這裏插入圖片描述

C89 標準

到了80年代,C語言越來越流行,廣泛被業界使用,從大型主機到小型微機,各個廠商羣雄並起,推出了多款C語言的編譯器。這些編譯器根據行業和廠商自己的需求,進行了各種擴展,C語言進入了春秋戰國時代,逐漸演變成一個鬆散雜亂的大家族。

爲統一C語言版本,1983 年美國國家標準局(American National Standards Institute,簡稱 ANSI)成立了一個委員會,專門來制定C語言標準。1989 年C語言標準被批准,被稱爲 ANSI X3.159-1989 “Programming Language C”。這個版本的C語言標準通常被稱爲 ANSI C。又由於這個版本是 89 年完成制定的,因此也被稱爲 C89。

後來 ANSI 把這個標準提交到 ISO(國際化標準組織),1990 年被 ISO 採納爲國際標準,稱爲 ISO C。又因爲這個版本是1990年發佈的,因此也被稱爲 C90。

ANSI C(C89)與 ISO C(C90)內容基本相同,主要是格式組織不一樣。

因爲 ANSI 與 ISO 的C標準內容基本相同,所以對於C標準,可以稱爲 ANSI C,也可以說是 ISO C,或者 ANSI / ISO C。以後大家看到 ANSI C、ISO C、C89、C90,要知道這些標準的內容都是一樣的。

目前常用的編譯器,例如微軟編譯器、GCC、LLVM/Clang 等,都能很好地支持 ANSI C 的內容。

C99 標準

在 ANSI C 標準確立之後,C語言的規範在很長一段時間內都沒有大的變動。1995 年C程序設計語言工作組對C語言進行了一些修改,增加了新的關鍵字,編寫了新的庫,取消了原有的限制,並於 1999 年形成新的標準——ISO/IEC 9899:1999 標準,通常被成爲 C99。

但是這個時候的C語言編譯器基本已經成熟,各個組織對 C99 的支持所表現出來的興趣不同。當 GCC 和其它一些商業編譯器支持 C99 的大部分特性的時候,微軟和 Borland 卻似乎對此不感興趣,或者說沒有足夠的資源和動力來改進編譯器,最終導致不同的編譯器在部分語法上存在差異。

例如,ANSI C 規定,局部變量要在函數開頭定義,而 C99 取消了這個限制,變量可以在任意位置定義,我們將在《C語言變量的定義位置以及初始值》一節中詳細介紹。

C11 標準

C11 標準由國際標準化組織(ISO)和國際電工委員會(IEC) 旗下的C語言標準委員會於 2011 年底正式發佈,支持此標準的主流C語言編譯器有 GCC、LLVM/Clang、Intel C++ Compile 等。

C11 標準主要增加了以下內容:
增加了安全函數,例如 gets_s()、fopen_s() 等;
增加了 <threads.h> 頭文件以支持多線程;
增加了 <uchar.h> 頭文件以支持 Unicode 字符集;
以及其它一些細節。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章