C++23 标准包含哪个版本的 C 标准库?

Spe*_*cer 19 c++ standards language-lawyer c++23

(我最初的问题是关于“发生了什么_BitInt?”但这是基于对某些 cppreference 页面的误读)。

C++23 标准草案的库简介第 16.2 节表示 C++ 支持 C 标准库。然而,对特定 C 标准的唯一引用是在 16.3 的脚注 (#141) 中。这是 2018 年 C 标准,其中没有提到_BitInt. _BitInt但我在 C 23 标准草案中找到了描述。

C++23 标准是否包含特定版本的 C 标准库?

  • 如果有,是哪一个?
  • 如果没有,是否有一种机制可以合并未来 C 标准的库?

Bri*_*ian 13

引用N4950 2.2(C++23标准的最终工作草案):

  1. ISO/IEC 9899:2018 第 7 条中描述的库在下文中称为 C 标准库3

3根据第 17 条至第 33 条以及 C.7 中规定的资格,C 标准库是 C++ 标准库的子集

其中ISO/IEC 9899:2018 是 C17 标准

请注意,虽然 C++23 标准命名了特定的 C 标准库版本,但实现仍然可以提供任何附加功能作为语言扩展。这可能包括对 C 标准库更高版本的支持或对 C 核心语言功能的支持(如_BitInt(N))。例如,GCC 和 Clang 在编译 C++ 代码时都提供C99 VLA作为语言扩展,而 Clang在编译 C++ 代码或早期版本的 C 代码时支持 C23_BitInt(N)作为扩展


Cal*_*eth 5

您误读了 cppreference,尽管它的名称是 C 的参考。您链接的页面描述了 C23 标准,因此列出该标准中添加的内容是有意义的。您链接的维基百科页面适用于 C++23,但没有提及_BitInt.