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

Which version of the C Standard Library does the C++23 Standard incorporate?

提问人:Spencer 提问时间:11/4/2023 最后编辑:Brian61354270Spencer 更新时间:11/5/2023 访问量:1198

问:

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

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

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

  • 如果是这样,是哪一个?
  • 如果没有,是否有一种机制来整合未来 C 标准的库?
C++ 语言-律师 标准 C++23

评论

1赞 Erel 11/4/2023
我不确定我是否理解你在问什么。您的链接涉及 C23,文章涉及 **C++**23,我在该页面中找不到任何参考。我错过了什么吗?cppreferenceWikipedia_BitInt
1赞 Brian61354270 11/4/2023
这应该是“声称 C23 添加”,而不是 C++23?
5赞 Richard Critten 11/4/2023
这是来自 C++ 标准草案 [defns.c.lib] “...ISO/IEC 9899:2018 第 7 条中描述的库...”- 您现在需要将 ISO 编号引用到 C 标准。
2赞 Brian61354270 11/4/2023
@RichardCritten我认为这有资格作为答案
4赞 John Bollinger 11/4/2023
_BitInt是 C23 的核心功能,而不是其标准库的一部分。由于合并了任何版本的 C 标准库,您将无法在 C++ 中获得它。还有其他 C 语言功能在 C++ 中也没有出现。例如,VLA。C++ 不是 C 的超集。

答:

5赞 Caleth 11/4/2023 #1

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

13赞 Brian61354270 11/4/2023 #2

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

  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 核心语言功能的支持(如 )。例如,GCC 和 Clang 在编译 C++ 代码时都提供 C99 VLA 作为语言扩展,而 Clang 在编译早期版本的 C++ 代码或 C 代码时支持 C23 的 _BitInt(N) 作为扩展_BitInt(N)