我正在尝试
typedef struct
{
int x = 5;
char str[20];
} nodeStr;
它适用于C ++,但不适用于C.要使其在C中工作,我需要从代码中删除x
(即= 5
)的定义。在C和C ++中有没有概念上的区别来解释这个?谢谢!
答案 0 :(得分:4)
类内初始化是一种新的C ++ 11特性 - 如果你使用(不多)旧的C ++编译器,它就不会编译。所以是的,这是C和C ++之间的区别。
答案 1 :(得分:2)
在C ++中,结构与类几乎相同,因此它们可以有构造函数。
// note: removed the typedef to make it slightly clearer
struct nodeStr
{
int x = 5;
char str[20];
};
与:
相同struct nodeStr
{
int x;
char str[20];
nodeStr()
{
x = 5;
}
};
C没有构造函数,因此无法执行此操作。
无论如何,这是概念上的原因。实际的原因要么“因为语言如此说”或“因为他们从未将其添加到C语言中”。