C C 起源及C89 C99 C11標準

2021-08-06 07:40:43 字數 2773 閱讀 8967

ffmpeg使用的是c99。而vc支援的是c89(不支援c99)。因此vc一般情況下是無法編譯ffmpeg的源**的。

> c標準

c語言起源,c99 c11-

c89標準和c99標準c11標準的區別-

c89 和 c99 標準比較-

【k&r c】 1978 年,dennis ritchie 和 brian kernighan 合作推出了《the c programming language》的第一版(按照慣例,經典著作一定有簡稱,該著作簡稱為 k&r),書末的參考指南 (reference manual) 一節給出了當時 c 語言的完整定義,成為那時 c 語言事實上的標準,人們稱之為 k&r c。從這一年以後,c 語言被移植到了各種機型上,並受到了廣泛的支援,使 c 語言在當時的軟體開發中幾乎一統天下。

1.【c89 (ansi c)】 隨著 c 語言在多個領域的推廣、應用,一些新的特性不斷被各種編譯器實現並新增進來。於是,建立乙個新的「無歧義、於具體平台無關的 c 語言定義」 成為越來越重要的事情。1983 年,asc x3(ansi 屬下專門負責資訊科技標準化的機構,現已改名為 incits)成立了乙個專門的技術委員會 j11(j11 是委員會編號,全稱是 x3j11),負責起草關於 c 語言的標準草案。1989 年,草案被 ansi 正式通過成為美國國家標準,被稱為 c89 標準。 

2.【c90 (iso c)】 隨後, 《the c programming language》第二版開始出版發行,書中內容根據 ansi c(c89)進行了更新。1990 年,在 iso/iec jtc1/sc22/wg14 (iso/iec 聯合技術第 i 委員會第 22 分委員會第 14 工作組) 的努力下,iso 批准了 ansi c 成為國際標準。於是 iso c(又稱為 c90) 誕生了。除了標準文件在印刷編排上的某些細節不同外,iso c(c90) 和 ansi c(c89) 在技術上完全一樣。 

3.【c95】 之後,iso 在 1994、1996 年 分別出版了 c90 的技術勘誤文件,更正了一些印刷錯誤,並在1995 年通過了乙份 c90 的技術補充,對 c90 進行了微小的擴充,經過擴充後的 iso c 被稱為 c95。 

4.【c99】 1999 年,ansi 和 iso 又通過了最新版本的 c 語言標準和技術勘誤文件,該標準被稱為 c99 。這基本上是目前關於 c 語言的最新、最權威的定義了。

5.c11 

c99是標準iso/iec 9899:1999的簡稱。2023年12月8號,iso 發布了新的 c 語言的新標準——c11,之前被稱為c1x,官方名稱 iso/iec 9899:2011。c11是目前最新的c語言標準。

現在,各種 c 編譯器都提供了 c89(c90) 的完整支援,對 c99 還只提供了部分支援,還有一部分提供了對某些 k&r c 風格的支援。  

目前主要的c語言規範有c89(c90), c95(94)和c99。c89是最早的c語言規範,於89年提出,90年先由美國國家標準局推出ansi版本,後來被接納為iso國際標準 (iso/iec 9899:1990),因而有時也稱為c90。但在94和96年分別對c90進行了兩次錯誤修正,gcc支援的是修正後的c89(90)版本的c語言規 範。在95年提出過對90版規範的修訂案,稱為 c95或者amd1。gcc也支援c95規範。最新的一次c規範修訂在99年制定(iso/iec 9899:1999),即常稱的c99規範。在2023年對c99的錯誤進行了修正,gcc支援的修正後的c99規範,但是到目前為止,gcc還沒有完成對c99規範的完全支援。

-- c語言起源

【起源】 c 語言最早的原型是 algol 60 1963 年,劍橋大學將其發展成為 cpl(combined programing language)。 1967 年,劍橋大學的 matin richards 對 cpl 語言進行了簡化,產生了 bcpl 語言。 1970 年,美國貝爾實驗室(bell labs)的 ken thompson 將 bcpl 進行了修改,並取名叫做 b 語言,意思是提取 cpl 的精華(boiling cpl down to its basic good features)。並用 b 語言寫了第乙個 unix 系統。 1973 年,at&t 貝爾實驗室的 dennis ritchie(d.m.ritchie) 在 bcpl 和 b 語言的基礎上設計出了一種新的語言,取 bcpl 中的第二個字母為名,這就是大名鼎鼎的 c 語言。隨後不久,unix 的核心(kernel) 和應用程式全部用 c 語言改寫,從此,c 語言成為 unix 環境下使用最廣泛的主流程式語言。

> c++ 標準

c++ -

1.c++ 98 標準:c++標準第一版,2023年發布。正式名稱為iso/iec 14882:1998 。

2.c++ 03 標準:c++標準第二版,2023年發布。正式名稱為iso/iec 14882:2003   。

3.c++ 11 標準:c++標準第三版,2023年8月12日發布。正式名稱為iso/iec 14882:2011  。

c++11對容器類的方法做了三項主要修改。

首先,新增的右值引用使得能夠給容器提供移動語義。其次,由於新增了模板類initilizer_list,因此新增了將initilizer_list作為引數的建構函式和賦值運算子。第三,新增的可變引數模板(variadic template)和函式引數包(parameter pack)使得可以提供就地建立(emplacement)方法。

4.c++ 14 標準

c++標準第四版,2023年8月18日發布。正式名稱為iso/iec 14882:2014  。

c++14是c++11的增量更新,主要是支援普通函式的返回型別推演,泛型 lambda,擴充套件的 lambda 捕獲,對 constexpr 函式限制的修訂,constexpr變數模板化等  。

ANSI C與C89 C99 C11區別差異

以下為 k r c 1978 年,dennis ritchie 和 brian kernighan 合作推出了 the c programming language 的第一版 按照慣例,經典著作一定有簡稱,該著作簡稱為 k r 書末的參考指南 reference manual 一節給出了當時 c 語...

C語言三大標準C89,C99和C11

1983 年美國國家標準局 american national standards institute,簡稱 ansi 成立了乙個委員會,專門來制定c語言標準。1989 年c語言標準被批准,被稱為 ansi x3.159 1989 programming language c 這個版本的c語言標準通...

C 11 與 C99的相容

c 對以下c99特性的支援納入了新標準之中 1 c99中的預定義巨集 2 func 預定義識別符號 3 pragma操作符 4 不定引數巨集定義以及 va args 5 寬窄字串連線 使用上述巨集可以檢查機器環境對c標準和c庫的支援情況。include using namespace std int...