C标准函数库
![本页使用了标题或全文手工转换](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
C标准函数库 |
---|
一般 |
杂项 |
C 标准函式库(C standard library,缩写:libc)是在C语言程式设计中,所有符合标准的头文件(header file)的集合,以及常用的函式库实作程序(如 I/O 输入输出和字串控制)。不像 COBOL、Fortran 和 PL/I等程式语言,在 C 语言的工作任务里不会包含嵌入的关键字,所以几乎所有的 C 语言程式都是由标准函式库的函式来建立的。
设计
每一个函式的名称与特性会被写成一个电脑档案,这个档案就称为标头档案,但是实际的函式实作是被分存到函式库档案里。标头档的命名和领域是很常见的,但是函式库的组织架构也会因为不同的编译器而有所不同。标准函式库通常会随附在编译器上。因为 C 编译器常会提供一些额外的非 ANSI C 函式功能,所以某个随附在特定编译器上的标准函式库,对其他不同的编译器来说,是不相容的。
设计品质
大多数 C 标准函式库设计得很好。有些少部分会为了商业优势和利益,把某些旧函式视同错误或提出警告。字串输入函式 gets()
及 scanf()
读取字串输入的使用是很多缓冲区溢位的原因,大多数的程式设计指南会建议避免使用。另一个较为奇特的函式是 strtok()
,它原本是作为早期的词法分析用途,但是它非常容易出错(fragile),而且很难使用。
历史沿革
ANSI C共包括15个标头档。1995年,Normative Addendum 1 (NA1)批准了3个头文件(iso646.h
、wchar.h
和wctype.h
)增加到C标准函数库中。C99标准增加了6个头文件(complex.h
、fenv.h
、inttypes.h
、stdbool.h
、stdint.h
和tgmath.h
)。C11标准中又新增了5个头文件(stdalign.h
、stdatomic.h
、stdnoreturn.h
、threads.h
和uchar.h
)。至此,C标准函数库共有29个头文件:
名字 | 源自 | 描述 |
---|---|---|
<assert.h> |
包含断言,被用来在程序的调试版本中帮助检测逻辑错误以及其他类型的bug。 | |
<complex.h> |
C99 | 一组操作复数的函数。 |
<ctype.h> |
定义了一组函数,用来根据类型来给字符分类,或者进行大小写转换,而不关心所使用的字符集(通常是ASCII或其扩展字符集,也有EBCDIC)。 | |
<errno.h> |
用来测试由库函数报的错误代码。 | |
<fenv.h> |
C99 | 定义了一组用来控制浮点数环境的函数。 |
<float.h> |
定义了用于浮点数库特定实现的宏常量。 | |
<inttypes.h> |
C99 | 定义精确的宽度整数类型。 |
<iso646.h> |
NA1 | 定义几个等效于C中某些运算符的宏。用于使用ISO 646变体字符集进行编程。 |
<limits.h> |
定义了用于整数库特定实现属性的宏常量。 | |
<locale.h> |
定义C语言本地化函数。 | |
<math.h> |
定义C语言数学函数。 | |
<setjmp.h> |
定义了巨集setjmp 和longjmp ,在非局部跳转的时候使用。
| |
<signal.h> |
定义C语言信号处理函数。 | |
<stdalign.h> |
C11 | 用于查询和指定对象的数据结构对齐方式。 |
<stdarg.h> |
用于查询和指定对象的数据结构对齐方式。 | |
<stdatomic.h> |
C11 | 用于查询和指定对象的数据结构对齐方式。 |
<stdbool.h> |
C99 | 定义布尔数据类型。 |
<stddef.h> |
定义了几个常见的类型与巨集。 | |
<stdint.h> |
C99 | 定义精确的宽度整数类型。 |
<stdio.h> |
定义输入输出函数。 | |
<stdlib.h> |
定义数值转换函数,伪随机数生成函数,动态内存分配函数,过程控制函数。 | |
<stdnoreturn.h> |
C11 | 用于指定非返回函数。 |
<string.h> |
定义C语言字符串处理函数。 | |
<tgmath.h> |
C99 | 定义类型通用数学函数。 |
<threads.h> |
C11 | 定义用于管理多个执行绪以及互斥体和条件变数的函数。 |
<time.h> |
定义日期和时间处理函数。 | |
<uchar.h> |
C11 | 用于操作Unicode字元的类型和函数。 |
<wchar.h> |
NA1 | 定义宽字串处理函数。 |
<wctype.h> |
NA1 | 定义一组函数,用于按类型对宽字元进行分类或在大小写之间进行转换。 |
参考文献
外部链接
- The C Standard Library:A detailed description of the header files
- The C Library Reference Guide
- Microsoft C Run-Time Libraries(页面存档备份,存于互联网档案馆) on MSDN
- Coding Programmer Page(页面存档备份,存于互联网档案馆) [Coding Programmer Page / Library Reference and Examples] (english) ]
参见
|
|