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

19
(我的原始问题本来是关于“_BitInt发生了什么?”但那是基于对一些cppreference页面的误读)。
C++23草案标准的库介绍部分16.2说C标准库在C++中得到支持。然而,对于具体的C标准,只有在16.3的一个脚注(#141)中提到。这是指2018年的C标准,其中并没有提到_BitInt。但我在C 23草案标准中找到了对_BitInt的描述。
C++23标准是否包含特定版本的C标准库?
- 如果是,是哪个版本? - 如果不是,是否有机制可以将未来C标准的库纳入其中?

1
应该是“声称C23增加”,而不是C++23吗? - undefined
5
这是来自C++标准草案[defns.c.lib]的内容:"...描述在ISO/IEC 9899:2018,第7条款中的库..." - 现在你需要引用ISO编号到C标准中。 - undefined
2
@RichardCritten 我认为这可以算作一个答案。 - undefined
1
@RichardCritten 这是C17的链接:https://www.open-std.org/jtc1/sc22/wg14/www/projects.html :) - undefined
4
_BitInt是C23的核心特性,而不是其标准库的一部分。通过引入任何版本的C标准库,您将无法在C++中获得它。还有其他一些C语言特性在C++中也不存在,比如可变长度数组(VLAs)。C++并不是C的超集。 - undefined
显示剩余6条评论
2个回答

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的可变长度数组(VLAs)作为语言扩展,而在编译C++代码或早期版本的C代码时,Clang还作为扩展支持C23的_BitInt(N)。

5
你误读了cppreference,尽管名字上是C++的参考资料,但它也是C的参考资料。你链接的页面描述的是C23标准,所以它列出了该标准中添加的内容是有道理的。你链接的维基百科页面是关于C++23的,但它没有提到_BitInt。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接