C 標準函式庫檢視原始碼討論檢視歷史
C 標準函式庫 |
C 標準函式庫在C語言程式設計里,C 標準函式庫(C Standard library)收集所有目前符合標準的表頭檔(head file),以及常用的函式庫實作程式,例如I/O 輸入輸出和字串控制。不像COBOL、Fortran和PL/I等程式語言,在 C 語言的工作任務里不會包含嵌入的關鍵字,所以幾乎所有的 C 語言程式都是由標準函式庫的函式來建立的。
基本信息
中文名 C 標準函式庫 [1]
外文名 C standard library
基本簡介
在C語言程式設計里,C 標準函式庫(C Standard library)收集所有目前符合標準的表頭檔(head file),以及常用的函式庫實作程式,例如I/O 輸入輸出和字串控制。不像COBOL、Fortran和PL/I等程式語言,在 C 語言的工作任務里不會包含嵌入的關鍵字,所以幾乎所有的 C 語言程式都是由標準函式庫的函式來建立的。
設計
每一個函式的名稱與特性會被寫成一個電腦檔案,這個檔案就稱為標頭檔案,但是實際的函式實作是被分存到函式庫檔案里。標頭檔的命名和領域是很常見的,但是函式庫的組織架構也會因為不同的編譯器而有所不同。標準函式庫通常會隨附在編譯器上。因為 C 編譯器常會提供一些額外的非ANSI C函式功能,所以某個隨附在特定編譯器上的標準函式庫,對其他不同的編譯器來說,是不相容的。
設計品質
大多 C 標準函式庫在設計上做得相當不錯。有些少部分的,會為了商業優勢和利益,會把某些舊函式視同錯誤或提出警告。字串輸入函式 gets()(以及 scanf() 讀取字串輸入的使用上)是很多緩衝區溢位的原因,而且大多的程式設計指南會建議避免使用它。另一個較為奇特的函式是 strtok(),它原本是作為早期的詞彙分析用途,但是它非常容易出錯(fragile),而且很難使用。
歷史沿革
1995年,Normative Addendum1 (NA1)批准了三個表頭檔(iso646.h, wchar.h, and wctype.h)增加到C標準函式庫中。C99標準增加了六個表頭檔(complex.h, fenv.h, inttypes.h, stdbool.h, stdint.h, and tgmath.h)。C11標準中又新增了5個表頭檔(stdalign.h, stdatomic.h, stdnoreturn.h, threads.h, and uchar.h)。至此,C標準函式庫共29個表頭檔:
參考來源