C++ Standard Library headers
C++标准库的接口由以下头文件集合定义。
多用途头文件 |
||
| 通用工具: 程序控制 、 动态内存分配 、 随机数 、 排序和搜索 | ||
|
(C++17)
|
并行版本算法的预定义执行策略 和执行控制组件 (自C++26起) | |
语言支持库 |
||
| 浮点类型限制 | ||
| 整型类型限制 | ||
|
(C++20)
|
三路比较运算符 支持 | |
|
(C++26)
|
契约支持库 | |
|
(C++20)
|
协程支持库 | |
| 保存(和跳转)到执行上下文的宏(和函数) | ||
| 信号管理函数和宏常量 | ||
| 可变长度参数列表处理 | ||
| 标准宏和类型定义 | ||
|
(C++11)
|
固定宽度整数类型 和 其他类型限制 | |
| 异常处理工具 | ||
|
(C++11)
|
std::initializer_list 类模板 | |
| 查询算术类型属性 | ||
| 低级内存管理工具 | ||
|
(C++20)
|
提供获取 源代码位置 的方法 | |
|
(C++23)
|
固定宽度浮点类型 | |
|
(C++11)
|
std::type_index | |
| 运行时类型信息工具 | ||
|
(C++20)
|
提供验证库实现状态的宏 | |
概念库 |
||
C 兼容性头文件
对于某些形如
xxx
.h
的C标准库头文件,C++标准库既包含同名头文件,也包含另一个形如
c
xxx
的头文件(所有有实际意义的
c
xxx
头文件均已在上方列出)。形如
xxx
.h
的头文件仅用于实现互操作性。C++源文件可能需要包含这些头文件之一才能成为有效的ISO C代码。不打算同时作为有效ISO C代码的源文件不应使用任何C头文件。
除
complex.h
外,C++ 标准库中包含的每个
xxx
.h
头文件都会将对应
c
xxx
头文件本应置于
std
命名空间中的每个名称放置于全局命名空间。
这些头文件被允许在
std
命名空间中声明相同的名称,对应的
c
xxx
头文件也被允许在全局命名空间中声明相同的名称:包含
<cstdlib>
必定提供
std::malloc
并可能同时提供
::
malloc
。包含
<stdlib.h>
必定提供
::
malloc
并可能同时提供
std::malloc
。这一规则甚至适用于不属于C标准库的函数及函数重载。
说明:
xxx
.h
头文件在 C++98 中被弃用,并在 C++23 中恢复使用。这些头文件不推荐在纯 C++ 代码中使用,但不会被未来版本移除。
| 行为与 <cassert> 相同 | |
| 行为如同将 <cctype> 中的所有名称置于全局命名空间 | |
| 行为与 <cerrno> 相同 | |
|
(C++11)
|
行为如同将 <cfenv> 中的所有名称置于全局命名空间 |
| 行为与 <cfloat> 相同 | |
|
(C++11)
|
行为如同将 <cinttypes> 中的所有名称置于全局命名空间 |
| 行为与 <climits> 相同 | |
| 行为如同将 <clocale> 中的所有名称置于全局命名空间 | |
|
行为如同将
<cmath>
中的所有名称置于全局命名空间,
除了 数学特殊函数 的名称 |
|
| 行为如同将 <csetjmp> 中的所有名称置于全局命名空间 | |
| 行为如同将 <csignal> 中的所有名称置于全局命名空间 | |
| 行为如同将 <cstdarg> 中的所有名称置于全局命名空间 | |
|
行为如同将
<cstddef>
中的所有名称置于全局命名空间,
除了
std::byte
及相关函数
的名称
|
|
|
(C++11)
|
行为如同将 <cstdint> 中的所有名称置于全局命名空间 |
| 行为如同将 <cstdio> 中的所有名称置于全局命名空间 | |
| 行为如同将 <cstdlib> 中的所有名称置于全局命名空间 | |
| 行为如同将 <cstring> 中的所有名称置于全局命名空间 | |
| 行为如同将 <ctime> 中的所有名称置于全局命名空间 | |
|
(C++11)
|
行为如同将 <cuchar> 中的所有名称置于全局命名空间 |
| 行为如同将 <cwchar> 中的所有名称置于全局命名空间 | |
| 行为如同将 <cwctype> 中的所有名称置于全局命名空间 |
特殊C兼容头文件
头文件
<stdatomic.h>
、
<stdbit.h>
和
<stdckdint.h>
声明了在C标准库中也提供的名称。头文件
<stdatomic.h>
还定义了
_Atomic
宏,该宏是C语言中的
关键字
。与其他
<
xxx
.h>
头文件不同,并未提供对应的
<cstdatomic>
、
<cstdbit>
和
<cstdckdint>
版本。
|
(C++23)
|
定义
_Atomic
并提供 C 标准库中的对应组件
|
|
(C++26)
|
提供 C 标准库中的对应组件 |
|
(C++26)
|
提供 C 标准库中的对应组件 |
空 C 头文件
头文件 <complex.h> 、 <ccomplex> 、 <tgmath.h> 和 <ctgmath> 不包含任何来自 C 标准库的内容,而仅包含 C++ 标准库中的其他头文件。
|
(C++11)
(deprecated in C++17)
(removed in C++20)
|
仅包含头文件 <complex> |
|
(C++11)
|
仅包含头文件 <complex> |
|
(C++11)
(deprecated in C++17)
(removed in C++20)
|
仅包含头文件 <complex> 和 <cmath> :这些头文件已提供与 C 头文件 <tgmath.h> 内容等效的重载 |
|
(C++11)
|
仅包含头文件 <complex> 和 <cmath> |
无意义的C语言头文件
头文件 <ciso646> 、 <cstdalign> 和 <cstdbool> 在 C++ 中无实际意义,因为这些头文件在 C 语言中提供的宏在 C++ 中已是语言关键字。
|
(C++20 中移除)
|
空头文件。
C 语言中
iso646.h
中的宏
在
C++ 中为关键字
|
|
(C++11)
(C++17 中弃用)
(C++20 中移除)
|
定义
兼容性宏常量
__alignas_is_defined
和
__alignof_is_defined
|
|
(C++11)
(C++17 中弃用)
(C++20 中移除)
|
定义
兼容性宏常量
__bool_true_false_are_defined
|
| 无实际作用 | |
|
(C++11)
|
定义
兼容性宏常量
__alignas_is_defined
和
__alignof_is_defined
|
|
(C++11)
|
定义
兼容性宏常量
__bool_true_false_are_defined
|
不受支持的C头文件
C 语言头文件
<stdatomic.h>
,
(until C++23)
<stdnoreturn.h>
和
<threads.h>
未被包含在 C++ 中,且没有对应的
c
xxx
等效版本。
实验性库
C++ TR's/TS's 还定义了若干头文件集合。
参见
|
C 文档
关于
标准库头文件
|