我注意到 C++17 中的许多新特性都来自 C17。这两个标准之间有什么关系吗?C 函数和它们的 C++ 等效函数之间有什么实际区别吗?
3 回答
C++17 是基于 C17 的吗?
不。
如果现在是 C11,那么对于 C++17 ,它最迟是 C11。
这是一个相关的提案(尽管我不确定是否正是这个提案被采纳了)。
我注意到 C++17 中的许多新特性都来自 C17。
我没有。我没有比较两者。如果两者都添加了类似的功能,那很可能是巧合。但是,由于 C17 实际上只是对 C11 的“错误修复”更新,因此似乎不太可能。
这两个标准之间有什么关系吗?
不是真的,不。当然,这两个工作组会相互交谈,但两种语言是独立的。
C 函数和它们的 C++ 等效函数之间有什么实际区别吗?
没有具体的例子我不能说,但你应该再次认为这些是分开和独立的事情。
C++ 仅就其“继承”的库和语言特性而言“基于”C。但是,请注意,这并不是将 C11 批量导入 C++17;这不是它的工作原理。
顺便说一句,虽然“C17”这个术语是它的一个公认(和广泛)名称,虽然它的__STDC_VERSION__
宏是201710L
,但它实际上是“C18”(技术上是ISO/IEC 9899:2018)。
(比较 C++98 的__cplusplus
情况199711L
;有时时间就是这样安排的,在这样的事情已经同意并冻结之后,出版时间会稍微延长到下一年。)
从 C++17 开始,C++ 标准指的是 C11 (该提案在 2016 年被采纳以验证 C++17 的一部分),而不是 C17。但我不会称它为“基于”。
此外,C++ 和 C 标准由不同的工作组制定,这些工作组并不真正相交,因此它们之间没有直接关系(尽管有一些努力使 C 和 C++ 功能保持同步,但这样做很容易/有意义)。
绝对不是 C 和 C++ 是不同的语言,它们具有完全不同的涉及树。顺便说一句,只要我知道它是 c11