C語言的演進過程中,出現做針對語言"本身"而制定的幾項重大版本,然而因為C語言的發展其實與Unix系統共生共榮,而Unix系統後來演變出許多不同的實作,因此除了C語言本身版本之外,也出現了POSIX標準,該標準提供了一些C語言本身標準未定義的函式,如:popen(),目的是建立不同的Unix

  C語言是貝爾實驗室在1970年代開發Unix系統時發展出來的語言,第一版C語言標準是 K&R ,而在1989年貝爾實驗室才在 K&R基礎上建立第二代K&R規格,也就是 ANSI 89 的第一版 ISO C語言標準。

  ISO C99 則是第二版C語言的ISO 標準,引進了一些C++ 特性作為改良(如:單行註解),另外該版本C語言主要也針對了數值科學運算的Feature作了改進。

  ISO C99 因為存在一些爭議以致遭受指責,所以後來又演進出了ISO C11版本發佈於2011年的12月,從K&RANSI 89再到ISO C99/11 這些是C語言本身標準的演進。

  POSIX 標準則是為了讓不同UNIX系統基礎指令相容的實作標準,該標準定義了一些為UNIX實作而存在的C語言標準,因此在符合POSIX 標準的實作系統中,有一些C語言函式並不存在於標準C語言版本之中,這些函式屬於”POSIX C 語言標準,最常見的是:"fork()/wait() function"。

  一般,符合POSIX標準實作的Unix-like系統都必須提供C Compiler,指令的名稱是 C99

  有兩種最常見的POSIX實作,相信大部份學電腦的人都聽過: BSD( Berkeley Software Distribution) 以及 GNU( GNU’s not Unix),兩者都提供了各自的C Compiler,前者使用的叫作 Clang Compiler,而GNU則使用非常著名的gcc( GNU Compiler Collection),甚至後來gccC的一些改進成為了C語言以及POSIX的實質標準。

  以上是一些C語言演進的過程,可以把POSIX標準當成是ISO C標準的UNIX 系統擴充,讓C語言可以完美支援UNIX家族的利器,在學習C語言過程,了解這些家族史,將會對開發過程相當有用,尤其在編譯C語言過程中選擇編譯參數時。

​​​​​​​201874日星期三

arrow
arrow

    jackterrylau 發表在 痞客邦 留言(0) 人氣()