哪些 C 功能受到 C++ 功能的影响 by/derived?

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

最初不是 C 的一部分,但后来发明了 in/for 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++ 可能受到同一来源的影响,而不是相互影响。

Attributes were added in C++11 and will be added in the next C standard revision C2x. The proposal (and here) 此功能专门引用了 C++。

Attributes can be useful for providing information that, for example, helps the compiler to issue better diagnostics or optimize the generated code. Source

示例:

int [[attr1]] i [[attr2, attr3]];

[[attr4(arg1, arg2)]] if (cond)

{
    [[vendor::attr5]] return i;
}

在这个例子中,“属性 attr1 适用于变量 i 的类型,attr2 和 attr3 适用于变量本身,attr4 适用于 if 语句,vendor::attr5 适用于 return 语句。" Source