哪些 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
最初不是 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