哪些 C 特征受C++特征的影响/派生自特征?

Which C Features are influenced by/derived from C++ Features?

本文关键字:特征 派生 影响 C++ 哪些      更新时间:2023-10-16

实际的C标准中有哪些功能,这些功能最初不是C的一部分,但是在C++中发明的,并且由于其优点,后来被C采用?

一个突出的例子是单行注释//,它最初来自C++,后来被C采用。

你知道实际的C标准的更多功能吗,它明确或隐含地来自C++的发展?

信息: 当然,我知道C++是从 C 派生的,但我只是在考虑从它的导数 C++ 的开发中采用了哪些功能。

我无法确认它们是否肯定受到直接C++ 1的影响,但以下是 C99 中添加的标准C++中的功能列表:

  • 单行注释(如前所述(
  • 内联函数
  • 块开始后允许的变量
  • 布尔数据类型
  • 复杂数学库

C11:

匿名
  • 联合(C11也允许匿名结构(。匿名工会已经进入标准C++。(标准C++中仍然不允许匿名结构(。

1例如 BCPL,B 的前身又是 C 的前身,单行注释的语法已经相同。其中一些在合并到标准C++之前可能已作为语言扩展在某些 C 实现中得到支持。在这些情况下,标准C和标准C++可能受到同一来源的影响,而不是相互影响。

属性是在 C++11 中添加的,并将在下一个 C 标准修订版 C2x 中添加。此功能的建议(和此处(特别引用了C++。

属性可用于提供信息,例如,帮助编译器发出更好的诊断或优化生成的代码。源

例:

int [[attr1]] i [[attr2, attr3]];
[[attr4(arg1, arg2)]] if (cond)
{
[[vendor::attr5]] return i;
}

在此示例中,">属性 attr1 适用于变量 i 的类型,attr2 和 attr3 适用于变量本身,attr4 适用于 if 语句,vendor::attr5 适用于返回语句。