C标准函数库
2015-12-28 18:04
190 查看
转自: 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个头文件:
简介编辑
在 C语言程序设计里,C 标准函数库(C Standard library)[1] 是所有符合标准的头文件(headfile)的集合,以及常用的函数库实现程序,例如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> | 定义了一组函数,用来根据类型来给字符分类,或者进行大小写转换,而不关心所使用的字符集(通常是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 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 |
相关文章推荐
- 皂君庙电信机房环境说明
- animation - 6
- Sysinternals 手册阅读 about vmmap--目标运行中优化内存
- 【看书】竖式问题
- JavaScript 面向对象开发
- 分布式架构详解
- Android 自动化测试
- Keymob为你揭秘不为人知的移动广告奥秘
- 路由协议的优先级,以及管理距离AD和metric的区别
- 查看linux磁盘的各个目录大小
- offsetof与container_of宏[总结]
- 代码覆盖率 (Code Coverage)从简到繁 (一)
- fuel 6.1自动推送3控高可用centos 6.5 juno环境排错(一)
- Oracle PLSQL Developer安装配置
- NGUI的原理机制:深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- Java调用R并打包成可执行的jar
- Ubuntu 15.04用包管理器安装node.js
- FZU 2214 Knapsack dp (转化背包)
- 使用java rsa 签名和验签,生成私钥和公钥
- iOS--错误集锦--iOS7.1系统,xcodeVersion 7.2,运行app出现上下黑边