内容来自cppreference.com
C语言保留字
紫色表示C99标准化、无色表示基础保留字、蓝色表示C90:
| int | short | long | double | float | char | if | else | for | while | do |
| goto | switch | case | static | struct | emun | union | typedef | return | break | continue |
| default | extern | const | void | signed | sizeof | register | unsigned | restrict | volatile | inline |
| _Alignas | _Alignof | _Atomic | _bool | _Complex | _Generic | _Imaginary | _Noreturn | _Static_assert | _Thread_local | volatile |
C语言库
| assert.h | ctype.h | errno.h | float.h | limits.h | locale.h | math.h | setjmp.h | signal.h | stdarg.h | stddef.h | stdio.h | stdlib.h | string.h | time.h |
| ios646.h | wchar.h | wctype.h |
|
|
|
|
|
|
|
|
|
|
|
|
| complex.h | fenv.h | inttypes.h | stdbool.h | stdint.h | tgmath.h |
|
|
|
|
|
|
|
|
|
| stdalign.h | stdatomic.h | stdnoreturn.h | uchar.h | threads.h |
|
|
|
|
|
|
|
|
|
|
C90
| assert.h | 主要是用于判断当前逻辑是否正常,如果不正常则将报错。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ctypet.h
| 主要是用于判断当前字符时哪种类型(例如是否是数组,是否是字母等)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| errno.h |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| limits.h
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| locale.h |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.h |
宏常量
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| setjmp.h | 非局部跳转
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| signal.h |
需要注意的是不同机构,信号是不一样的 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| stdarg.h |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| stddef.h | 额外基本类型及便利宏
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| stdlib.h | 动态内存管理 函数
终止程序 下列函数管理程序终止和资源清理。
访问环境
伪随机数生成
算法
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.h |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time.h
| 函数
常量
类型
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| stdio.h | 类型 预定义标准流
函数
宏常量
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
C95:
| iso646.h | 有使用非 ISO 646 字符的替用拼写,作为宏定义于 <iso646.h> :
字符 & 及 ! 在 ISO-646 下不变,但仍然为这些运算符提供替用写法,以使用这些字符适应更加受限的历史字符集。 没有等于运算符的替用拼写 == ,因为字符 = 已在所有受支持字符集中存在。 替用记号(C95) 下列替用记号是核心语言的一部分,而且在语言的所有方面,每个替用记号表现准确等同于其基本记号,除了其拼写(字符串化运算符可令拼写可见)。双字另种记号有时被称为“双标符”。
三标符 下列三字符组(三标符)在注释前分析并在字符串字面量中得到辨认,而且每个三标符的出现会被对应的基本字符取代:
因为三标符在早期处理,故如 // Will the next line be executed?????/ 的注释可以有效地注释掉下一行,且如 "What's going on??!" 的字符串字面量被分析成 "What's going on|" 。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| wctype.h |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| wchar.h |
|
C99
| complex.h |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| fenv.h |
函数
宏
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| inttypes.h |
fprintf 系列函数的格式常量 此处列出的每个 PRI 宏当且仅当实现定义对应的 typedef 名才得以定义。
fscanf 系列函数的格式常量 此处列出的每个 SCN 宏当且仅当实现定义对应的 typedef 名且拥有适合该类型的 fscanf 长度修饰符才得以定义。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| stdbool.h |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| stdint.h | 类型
实现可在 N 不是 8、 16、 32 或 64 时定义 typedef 名 intN_t、 int_fastN_t、 int_leastN_t、 uintN_t、 uint_fastN_t 及 uint_leastN_t 。形为 intN_t 的 typedef 名仅若实现支持有该宽度而无填充的整数类型才可以得以定义。从而 uint24_t 代表宽度准确地为 24 位的无符号整数类型。 下面列出的每个宏当且仅当实现定义对应的 typedef 名时才得以定义。宏 INTN_C 与 UINTN_C 分别对应 typedef 名 int_leastN_t 与 uint_leastN_t 。 宏常量
最小宽度整数常量的函数宏
#include <stdint.h>
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| tgmath.h | 泛型数学
头文件 <tgmath.h> 包含头文件 <math.h> 及 <complex.h> ,并定义了几种泛型宏。这些宏会根据参数类型决定要调用的实际函数。 对于每个宏,在<math.h>无后缀版函数中,所对应的实数类型为 double 的参数,即是所谓的泛型参数。(例如,pow的两个参数都是泛型参数,但scalbn只有第一个参数是泛型参数) 如下所述,使用 <tgmath.h> 宏时,传递给泛型参数的参数类型,会决定宏所选择的参数。若参数的类型与所选函数的参数类型不兼容,则行为未定义。(例如,若将复数参数传入实数限定的 tgmath 宏: float complex fc; ceil(fc) 或 double complex dc; double d; fmax(dc, d) 就是未定义行为的例子) 注意:泛型宏在 C99 中曾以实现定义行为实现,但 C11 关键词 _Generic 使得以可移植方式实现这些宏成为可能。 复数/实数泛型宏 对于所有拥有实数及复数对应的函数,存在泛型宏,调用下列函数之一:
上述规则的一个例外是 fabs 宏(见下表)。 调用的函数按以下方式决定: 泛型宏如下所示:
实数限定函数 对于所有无复数对应的函数,除 modf 外都存在泛型宏 XXX ,它会调用实数函数变体的中的一种: 以下列方式确定调用的函数:
复数限定函数 对于所有没有实数对应的复数函数,存在泛型宏 cXXX ,它会调用复数函数的变体: 调用的函数按以下方式决定:
|
C11
| stdalign.h |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| stdatomic.h | 原子操作
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| stdnoreturn.h |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| 线程
互斥
条件变量
线程局域存储
保留标识符 在 C 标准的未来修订中: 为函数名保留的表示符始终潜在地 (C23 起)对作为带外部链接的标识符的使用保留,而此处列出的其他标识符在包含 <stdatomic.h> 时潜在地 (C23 起)被保留。 声明、定义或 #undef 这种标识符导致未定义行为,若标准或实现提供它 (C23 起)。可移植的程序不应使用这些标识符。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uchar.h |
|