有哪些特性在现行的C标准中并非原本的C语言特性,而是在/为了C++而发明的,并因其优势而后来被采用到C语言中呢?
一个著名的例子就是单行注释//
,它最初来源于C++,后来被C语言采纳。
你知道哪些现行的C标准特性是明确或隐含地来源于C++开发的?
信息: 当然,我知道C++源于C,但我只是想知道哪些特性是从派生语言C++的开发中采用的。
有哪些特性在现行的C标准中并非原本的C语言特性,而是在/为了C++而发明的,并因其优势而后来被采用到C语言中呢?
一个著名的例子就是单行注释//
,它最初来源于C++,后来被C语言采纳。
你知道哪些现行的C标准特性是明确或隐含地来源于C++开发的?
信息: 当然,我知道C++源于C,但我只是想知道哪些特性是从派生语言C++的开发中采用的。
我无法确认它们是否直接受到C++的影响1,但下面是C99中增加的标准C++特性列表:
C11:
1例如,BCPL是B语言的前身,而B语言又是C语言的前身,已经有了单行注释的相同语法。在它们被纳入标准C++之前,其中一些可能已经以语言扩展的形式支持在某些C实现中。在这些情况下,标准C和标准C++可能都受到了相同来源的影响,而不是彼此影响。
union named { struct { int i;}; };
无名联合体:union named { struct { int i;} unnamed; };
。未命名的结构体没有名称,但有一个命名变量。匿名结构体没有名称,也没有命名变量。 - eerorika例子:属性可以用于提供信息,例如帮助编译器发出更好的诊断或优化生成的代码。来源
int [[attr1]] i [[attr2, attr3]];
[[attr4(arg1, arg2)]] if (cond)
{
[[vendor::attr5]] return i;
}
_Bool
类型是受到了 C++ 的bool
类型的启发。 - Jesper Juhlmain()
)也是C++开创并随后被C采纳的一项特性。 - Jesper Juhl