C ++ 17是基于C17的吗?

Mic*_*ein -1 c c++ language-lawyer c++17 c17

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

Lig*_*ica 9

C ++ 17是基于C17的吗?

没有。

截至当前工作草案为止,C ++的规范性引用为C11

如果现在是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)。

(CF C ++ 98周的__cplusplus199711L,这就是时机是如何工作了,有时,当出版象已经同意和冷冻的东西后稍稍延伸到下一年。)

  • @Lundin`__STDC_VERSION__`需要保持一致,并且通常模糊地匹配ISO文档名称(和发布日期),并且需要随着时间的流逝数值增加,但是最终它是任意的。标准的真实名称是标准的真实名称(“ C18”只是该名称的词汇缩写)。(另请参见,C ++ 98`__cplusplus`是_“ 199711L” _,因此我确信您不会因此将其称为C ++ 97)。我承认,在这种情况下,C17是更广泛使用的术语。计时结果如何。 (3认同)
  • 碰巧的是,有一个名为C18的C编译器,可最大程度地避免混乱。但是C18不支持C18。因此,如果有更多人支持C18,那么C18将能够支持C18。 (3认同)
  • 不,它是C17,因为`__STDC_VERSION__`是`201710L`,这很重要。通常,ISO发布日期是无关紧要的,它们总是滞后。例如,欧洲或美国标准可以命名为:2016,而完全等效的ISO标准可以命名为:2018。ISO尚未完全标准化标准。 (2认同)

Dan*_* M. 5

从C ++ 17开始,C ++标准指的是C11(该提案在2016年被采纳为C ++ 17的一部分),而不是C17。但是我不会称其为“基于”。

另外,C ++和C标准由实际上没有相交的不同工作组共同开发,因此它们之间没有直接关系(尽管在容易实现/有意义的情况下,我们仍在努力保持C和C ++功能同步。 )。

  • 你们(回答问题,对问题进行评论或投票的每个机构)都比人类想象的要快!你的秘密是什么? (2认同)
  • @AKL好吧,因为我们都是使用C ++编程的机器人;) (2认同)
  • 回复:“不要真正相交”-相反,两个标准组之间存在相当多的相交和大量的交互作用。 (2认同)