C++ 标准库头文件
< cpp
C++ 标准库的接口由下列头文件的汇集定义。
C 兼容头文件
对于一些形式为 xxx.h 的 C 标准库头文件,C++ 标准库同时包含同名的头文件和拥有形式 cxxx 的头文件(所有有意义的 cxxx 头文件列于上方)。
除了 complex.h 这一例外,C++ 标准库中包含的每个 xxx.h 头文件都将其对应的 cxxx 中本应置于 std 命名空间中的每个名字放在全局命名空间中。
允许这些头文件也在 std 命名空间中声明同样的名字,而且允许对应的 cxxx 头文件也在全局命名空间中声明同样的名字:包含 <cstdlib>
肯定会提供 std::malloc,亦可提供 ::malloc。包含 <stdlib.h>
肯定会提供 ::malloc,亦可提供 std::malloc。这甚至适用于并非 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 头文件
头文件 <complex.h>
、<ccomplex>
、<tgmath.h>
及 <ctgmath>
不含有任何来自 C 标准库的内容,而且不过是包含其他来自 C++ 标准库的头文件。C++ 中这些头文件的使用均已被弃用。
(C++11)(C++17 中弃用)(C++20 中移除) |
简单地包含头文件 <complex> |
(C++11)(弃用) |
简单地包含头文件 <complex> |
(C++11)(C++17 中弃用)(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 中移除) |
定义一个兼容性宏常量 |
(C++11)(弃用) |
定义一个兼容性宏常量 |
(C++11)(C++17 中弃用)(C++20 中移除) |
定义一个兼容性宏常量 |
(C++11)(弃用) |
定义一个兼容性宏常量 |
不受支持的 C 头文件
C++ 不包含 C 头文件 <stdatomic.h>
、<stdnoreturn.h>
及 <threads.h>
而且它们无 cxxx 等价版本。
实验性库
C++ TR/TS 亦定义数个头文件的汇集。