提问人:Spencer 提问时间:11/4/2023 最后编辑:Brian61354270Spencer 更新时间:11/5/2023 访问量:1198
C++23 标准包含哪个版本的 C 标准库?
Which version of the C Standard Library does the C++23 Standard incorporate?
问:
(我最初的问题是关于“发生了什么事?”,但这是基于对一些cppreferences页面的误读)。_BitInt
C++ 标准草案的库简介第 16.2 节说 C++ 支持 C 标准库。然而,对特定 C 标准的唯一引用是在 16.3 的脚注 (#141) 中。这是针对 2018 C 标准,其中没有提到 .但我在 C 23 标准草案中找到了描述。_BitInt
_BitInt
C++23 标准是否包含特定版本的 C 标准库?
- 如果是这样,是哪一个?
- 如果没有,是否有一种机制来整合未来 C 标准的库?
答:
5赞
Caleth
11/4/2023
#1
你误读了 cppreference,尽管它的名字也是 C 的参考。您链接的页面描述了 C23 标准,因此列出该标准中添加的内容是有意义的。您链接的维基百科页面是针对 C++23 的,但它没有提到 ._BitInt
13赞
Brian61354270
11/4/2023
#2
引用 N4950 2.2(C++ 标准的最终工作草案):
- ISO/IEC 9899:2018 第 7 条中描述的库在下文中称为 C 标准库3。
3 根据第 17 条至第 33 条和 C.7 中提到的条件,C 标准库是 C++ 的子集 标准库
其中 ISO/IEC 9899:2018 是 C17 标准。
请注意,虽然 C++23 标准命名了特定的 C 标准库版本,但实现仍然可以提供任何其他功能作为语言扩展。这可能包括对更高版本的 C 标准库的支持或对 C 核心语言功能的支持(如 )。例如,GCC 和 Clang 在编译 C++ 代码时都提供 C99 VLA 作为语言扩展,而 Clang 在编译早期版本的 C++ 代码或 C 代码时支持 C23 的 _BitInt(N)
作为扩展。_BitInt(N)
评论
cppreference
Wikipedia
_BitInt
_BitInt
是 C23 的核心功能,而不是其标准库的一部分。由于合并了任何版本的 C 标准库,您将无法在 C++ 中获得它。还有其他 C 语言功能在 C++ 中也没有出现。例如,VLA。C++ 不是 C 的超集。