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

2021-10-07 20:58:53 字數 1828 閱讀 6856

1983 年美國國家標準局(american national standards institute,簡稱 ansi)成立了乙個委員會,專門來制定c語言標準。1989 年c語言標準被批准,被稱為 ansi x3.159-1989 「programming language c」。這個版本的c語言標準通常被稱為 ansi c。又由於這個版本是 89 年完成制定的,因此也被稱為 c89。

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

c99對c89的改變

1、增加restrict指標

2、inline(內聯)關鍵字

3、新增資料型別 _bool 

4、對陣列的增強,可變長陣列,陣列宣告中的型別修飾符等

5、單行注釋

6、分散**與宣告

7、預處理程式的修改

a、變元列表

b、_pragma運算子

c、內部編譯指令

d、新增的內部巨集

8、for語句內的變數宣告  

9、復合賦值

10、柔性陣列結構成員

11、指定的初始化符

12、printf()和scanf()函式系列的增強

13、c99新增的庫

14、__func__預定義識別符號

15、其它特性的改動

放寬的轉換限制

不再支援隱含式的int規則

刪除了隱含式函式宣告

對返回值的約束

擴充套件的整數型別

對整數型別提公升規則的改進

c11 標準由國際標準化組織(iso)和國際電工委員會(iec) 旗下的c語言標準委員會於 2011 年底正式發布,支援此標準的主流c語言編譯器有 gcc、llvm/clang、intel c++ compile 等。

c11相比c99的變化

對齊處理操作符 alignof,函式 aligned_alloc(),以及 標頭檔案 。

_noreturn 函式標記,類似於 gcc 的attribute((noreturn))。

靜態斷言( static assertions),_static_assert(),在解釋 #if 和 #error 之後被處理。

刪除了 gets() 函式,c99中已經將此函式被標記為過時,推薦新的替代函式 gets_s()。

新的 fopen() 模式,(「…x」)。類似 posix 中的 o_creat|o_excl,在檔案鎖中比較常用。

匿名結構體/聯合體。

多執行緒支援,包括:_thread_local,標頭檔案 ,裡面包含執行緒的建立和管理函式(比如 thrd_create(),thrd_exit()),mutex (比如 mtx_lock(),mtx_unlock())等等。

_atomic型別修飾符和 標頭檔案 。

帶邊界檢查(bounds-checking)的函式介面,定義了新的安全的函式,例如 fopen_s(),strcat_s() 等等。

改進的 unicode 支援,新的標頭檔案 等。

新增 quick_exit() 函式,作為第三種終止程式的方式,當 exit() 失敗時可以做最少的清理工作(deinitializition)。

建立複數的巨集, cmplx()。

更多浮點數處理的巨集 。

struct timespec 成為 time.h 的一部分,以及巨集 time_utc,函式 timespec_get()。

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

c語言的三套標準:c89、c99和c11

C C 起源及C89 C99 C11標準

ffmpeg使用的是c99。而vc支援的是c89 不支援c99 因此vc一般情況下是無法編譯ffmpeg的源 的。c標準 c語言起源,c99 c11 c89標準和c99標準c11標準的區別 c89 和 c99 標準比較 k r c 1978 年,dennis ritchie 和 brian kern...

c語言c99標準 C語言標準參考手冊大全

當你選擇了一種語言,意味著你還選擇了一組技術 乙個社群。joshua bloch 關於參考手冊 c89標準庫 15個 c89標準庫功能簡介 c89標準庫 assert.h c89標準庫 ctype.h c89標準庫 errno.h c89標準庫 float.h c89標準庫 limits.h c89...

ANSI C與C89 C99 C11區別差異

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