C 库

C 语言库
C++ 库包含与 C 语言库相同的定义,组织在相同的头文件结构中,但有以下区别
  • 每个头文件的名称与 C 语言版本相同,但带有一个“c”前缀且没有扩展名。例如,C 语言头文件<stdlib.h>的 C++ 等效文件是<cstdlib>.
  • 库的每个元素都在std命名空间内定义。
然而,为了与 C 兼容,传统的头文件名name.h(如stdlib.h)也提供了相同的定义,但位于全局命名空间内。在本参考资料提供的示例中,使用了这个版本,以便示例完全与 C 兼容,尽管在 C++ 中其使用已被弃用。

C++ 实现中也存在某些特定的更改
  • wchar_t, char16_t, char32_tbool是 C++ 中的基本类型,因此没有在它们在 C 中出现的相应头文件中定义。这同样适用于头文件 <iso646.h> 中的几个宏,它们在 C++ 中是关键字。
  • 以下函数的声明在其参数的 constness 方面有所变化: strchrstrpbrkstrrchrstrstrmemchr
  • <cstdlib> 中定义的函数 atexitexitabort 在 C++ 中的行为有所增加。
  • 提供了一些函数的重载版本,这些版本使用额外的类型作为参数,但语义相同,例如floatlong double版本的 cmath 头文件中的函数,或long版本的 absdiv

版本说明

C++98 包含了 1990 ISO C 标准及其修正案 #1 (ISO/IEC 9899:1990 和 ISO/IEC 9899:1990/DAM 1) 所描述的 C 库。

C++11 包含了 1999 ISO C 标准及其技术勘误 1、2 和 3 (ISO/IEC 9899:1999 和 ISO/IEC 9899:1999/Cor.1,2,3) 所描述的 C 库,外加 <cuchar> (依据 ISO/IEC 19769:2004)。

2011 ISO C 标准引入的其他内容与 C++ 不兼容。

头文件

ISO-C 90 的修正案 1 增加了两个额外的头文件:<cwchar><cwctype>