C++17 是基于 C17 的吗?

Is C++17 based on C17?

我注意到 C++17 中的许多新功能都来自 C17。这两个标准之间有什么关系吗? C 函数和它们的 C++ 等效函数之间有什么实际区别吗?

从 C++17 开始,C++ 标准 refers to C11 (this proposal was adopted to ve the part of C++17 in 2016),而不是 C17。但我不会称它为 "based on".

此外,C++ 和 C 标准是由不同的工作组制定的,这些工作组并不真正交叉,因此它们之间没有直接关系(尽管在很容易的情况下会努力保持 C 和 C++ 功能的同步做 so/makes 感觉)。

Is C++17 based on C17?

没有

The normative reference for C++ as of the current working draft is C11.

如果现在是 C11,那么 C++17 最迟C11。

Here's a related proposal(虽然我不确定是否正是这个提案被采纳)。


I have noticed that many of the features new in C++17 were from C17.

我没有。我没有比较过两者。如果两者都添加了相似的功能,那很可能是 co-incidence。但是,由于 C17 实际上只是对 C11 的 "bug fix" 更新,因此似乎不太可能。

Is there any relation between the two standards?

不是,不是。两个工作组当然会互相交流,但是两种语言是独立的。

Are there any practical differences between the C functions and their C++ equivalents?

没有具体的例子我不能说,但你还是应该把这些看作是独立的东西。

C++ 在库和语言功能方面仅 "based on" C,它 "inherits"。但是请注意,这并不是将 C11 批量导入 C++17; that's not how it works.


顺便说一下,虽然术语 "C17" 是一个公认的(并且广泛使用的)名称,而且尽管它的 __STDC_VERSION__ 宏是 201710L,但它是 真的 "C18"(技术上ISO/IEC 9899:2018)。

(c.f。C++98 的 __cplusplus199711L;这就是有时时间安排的方式,当发布稍微延伸到后续一年后,类似的事情已经达成一致并被冻结。)

绝对不会 C和C++是不同的语言,它们的涉及树完全不同。 顺便说一下,只要我知道它是 c11