转自: http://baike.baidu.com/link?url=u1acEoy_GqLcSq1sEh_ntyLqWGQ28W8AUCqDzZtBlzhCYTFac08hnMHT-PonS_0a7LjmSzXPfWYBLd_dyNyKtq
简介编辑
在
C语言程序设计里,
C 标准函数库(C Standard library)
[1]
是所有符合标准的
头文件(head file)的集合,以及常用的函数库实现程序,例如I/O 输入输出和
字符串控制。不像
COBOL、
Fortran 和
PL/I等编程语言,在 C 语言的工作任务里不会包含嵌入的
关键字,所以几乎所有的 C 语言程序都是由标准函数库的函数来创建的。
设计编辑
每一个函数的名称与特性会被写成一个电脑文件,这个文件就称为
头文件,但是实际的函数实现是被分存到函数库文件里。头文件的命名和领域是很常见的,但是函数库的组织架构也会因为不同的编译器而有所不同。标准函数库通常会随附在
编译器上。因为 C 编译器常会提供一些额外的非
ANSI C 函数功能,所以某个随附在特定编译器上的标准函数库,对其他不同的编译器来说,是不兼容的。
设计质量编辑
大多 C 标准函数库在设计上做得相当不错。有些少部分的,会为了商业优势和利益,会把某些旧函数视同错误或提出警告。字符串输入函数 gets()(以及 scanf() 读取字符串输入的使用上)是很多
缓存溢出的原因,而且大多的程序设计指南会建议避免使用它。另一个较为奇特的函数是 strtok(),它原本是作为早期的词汇分析用途,但是它非常容易出错(fragile),而且很难使用。
历史沿革编辑
1995年,
Normative Addendum 1 (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个头文件:
名字
|
源自
|
描述
|
---|---|---|
<assert.h>
|
包含
断言宏,被用来在程序的调试版本中帮助检测逻辑错误以及其他类型的bug。
| |
<complex.h>
|
C99
|
一组操作
复数的函数。
|
<ctype.h>
| ||
<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 theinteger types.
| |
<locale.h>
|
定义C语言本地化函数.
| |
<math.h>
|
定义C语言数学函数。
| |
<setjmp.h>
|
定义了宏setjmp和longjmp,在非局部跳转的时候使用。
| |
<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
|
Defines a boolean data type.
|
<stddef.h>
|
Defines several useful types and macros.
| |
<stdint.h>
|
C99
|
Defines exact width integer types.
|
<stdio.h>
|
Defines core input and output functions
| |
<stdlib.h>
|
Defines numeric conversion functions, pseudo-random numbers generation functions, dynamicmemory allocation, process control functions
| |
<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.
|
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
|