Namespaces
Variants

C++ Standard Library headers

From cppreference.net
Standard library headers

C++标准库的接口由以下头文件集合定义。

目录

多用途头文件

通用工具: 程序控制 动态内存分配 随机数 排序和搜索
并行版本算法的预定义执行策略 和执行控制组件 (自C++26起)

语言支持库

浮点类型限制
整型类型限制
(C++20)
三路比较运算符 支持
契约支持库
协程支持库
保存(和跳转)到执行上下文的宏(和函数)
信号管理函数和宏常量
可变长度参数列表处理
标准宏和类型定义
(C++11)
固定宽度整数类型 其他类型限制
异常处理工具
std::initializer_list 类模板
查询算术类型属性
低级内存管理工具
提供获取 源代码位置 的方法
(C++23)
固定宽度浮点类型
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> 相同
行为如同将 <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> 版本。

定义 _Atomic 并提供 C 标准库中的对应组件
(C++26)
提供 C 标准库中的对应组件
提供 C 标准库中的对应组件

空 C 头文件

头文件 <complex.h> <ccomplex> <tgmath.h> <ctgmath> 不包含任何来自 C 标准库的内容,而仅包含 C++ 标准库中的其他头文件。

(C++11) (deprecated in C++17) (removed in C++20)
仅包含头文件 <complex>
仅包含头文件 <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
无实际作用
定义 兼容性宏常量 __alignas_is_defined __alignof_is_defined
定义 兼容性宏常量 __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 文档 关于 标准库头文件