C標準函式庫

维基百科,自由的百科全书
跳转至: 导航搜索

C語言程式設計裡,C 標準函式庫C Standard library)是所有目前符合標準的头文件head file)的集合,以及常用的函式庫實作程序,例如 I/O 輸入輸出字串控制。不像 COBOLFortranPL/I等程式語言,在 C 語言的工作任務裡不會包含嵌入的關鍵字,所以幾乎所有的 C 語言程式都是由標準函式庫的函式來建立的。

設計[编辑]

每一個函式的名稱與特性會被寫成一個電腦檔案,這個檔案就稱為標頭檔案,但是實際的函式實作是被分存到函式庫檔案裡。標頭檔的命名和領域是很常見的,但是函式庫的組織架構也會因為不同的編譯器而有所不同。標準函式庫通常會隨附在編譯器上。因為 C 編譯器常會提供一些額外的非 ANSI C 函式功能,所以某個隨附在特定編譯器上的標準函式庫,對其他不同的編譯器來說,是不相容的。

設計品質[编辑]

大多 C 標準函式庫在設計上做得相當不錯。有些少部分的,會為了商業優勢和利益,會把某些舊函式視同錯誤或提出警告。字串輸入函式 gets()(以及 scanf() 讀取字串輸入的使用上)是很多緩衝區溢位的原因,而且大多的程式設計指南會建議避免使用它。另一個較為奇特的函式是 strtok(),它原本是作為早期的词法分析用途,但是它非常容易出錯(fragile),而且很難使用。

历史沿革[编辑]

ANSI C共包括15個表頭檔。1995年,Normative Addendum 1 (NA1)批准了3个头文件(iso646.h, wchar.h, and wctype.h)增加到C标准函数库中。C99标准增加了6个头文件(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个头文件:


名字 源自 描述
<assert.h> 包含断言宏,被用来在程序的调试版本中帮助检测逻辑错误以及其他类型的bug。
<complex.h> C99 一组操作复数的函数。
<ctype.h> 定义了一组函数,用来根据类型来给字符分类,或者进行大小写转换,而不关心所使用的字符集(通常是ASCII或其扩展字符集,也有EBCDIC)。
<errno.h> 用来测试由库函数报的错误代码。
<fenv.h> C99 定义了一组用来控制浮点数环境的函数。
<float.h> Defines macro constants specifying the implementation-specific properties of the 浮点数 library.
<inttypes.h> C99 Defines exact width integer types.
<iso646.h> NA1 Defines several macros that are equivalent to some of the operators in C. For programming in ISO 646 variant character sets.
<limits.h> Defines macro constants specifying the implementation-specific properties of the integer types.
<locale.h> 定义C语言本地化函数。
<math.h> 定义C语言数学函数。
<setjmp.h> 定义了宏setjmplongjmp,在非局部跳转的时候使用。
<signal.h> 定义C语言信号处理函数。
<stdalign.h> C11 For querying and specifying the data structure alignment of objects.
<stdarg.h> For accessing a varying number of arguments passed to functions.
<stdatomic.h> C11 For atomic operations on data shared between threads.
<stdbool.h> C99 定义布尔数据类型。
<stddef.h> 定义了几个常见的类型与宏。
<stdint.h> C99 Defines exact width integer types.
<stdio.h> 定义输入输出函数。
<stdlib.h> 定义数值转换函数,伪随机数生成函数,动态内存分配函数,过程控制函数。
<stdnoreturn.h> C11 For specifying non-returning functions.
<string.h> 定义C语言字符串处理函数。
<tgmath.h> C99 Defines type-generic mathematical functions.
<threads.h> C11 Defines functions for managing multiple threads as well as mutexes and condition variables.
<time.h> Defines date and time handling functions
<uchar.h> C11 Types and functions for manipulating Unicode characters.
<wchar.h> NA1 Defines wide string handling functions.
<wctype.h> NA1 Defines set of functions used to classify wide characters by their types or to convert between upper and lower case

參考資料[编辑]


其他項目[编辑]

外部連結[编辑]