C 标准库

对于 Linux 系统, 标准库头文件处于目录 /usr/include 之下. 对应的链接库则位于 /lib/x86_64-linux-gnu/libc.so.6.

实际上这是个符号链接, 指向了 /lib/x86_64-linux-gnu/libc-2.27.so. 估计和操作系统的版本有关系.

libc 一般都可执行以显示版本信息:

$ /lib/x86_64-linux-gnu/libc.so.6

GNU C Library (Debian GLIBC 2.27-3) stable release version 2.27.
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 7.3.0.
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.debian.org/Bugs/>.

从路径上可以看出不同的 CPU 架构会影响系统存放库文件的路径.

标准库根据用途不同分成了 15 个不同的头文件. 但他们都会链接到同一个库文件.

assert.h
提供一个宏, 验证一个表达式的布尔值, 当值为假时输出诊断信息.
ctype.h
提供了检查变量数值类型的函数.
errno.h
提供整数变量 errno, 这个变量可由系统自动更改, 或者手动修改. 它的值对应了不同的错误类型, 可用 man errno 查看.
float.h
提供了当前平台关于浮点数标准的常量. 只提供信息, 不提供功能.
limits.h
提供了当前平台关于各类型数值极限的常量. 只提供信息, 不提供功能.
locale.h
与本地化相关的数据结构与函数. 可用于设定日期格式, 货币符号等等.
math.h
一系列数学计算函数. 参数与返回值都是 double 类型.
setjmp.h
强大的跳转功能. 比 goto 语句更强大也更难用. 不推荐使用.
signal.h
处理系统信号.
stdarg.h
提供了一个变长参数列表类型用于函数定义.
stddef.h
定义的标准扩展类型与宏. 其他头文件大多包含了此头文件.
stdio.h
与输入输出相关的类型, 函数与宏.
stdlib.h
通用工具. 与随机数相关的函数与宏也在此头文件中.
string.h
处理字符串(字符数组).
time.h
操作日期与时间.