#include<stdio.h>
struct Node
{
};
int main()
{
return 0;
}
这个简单的代码以文件名 NODE.C 保存,这会出错:
ERROR NODE.C 5:类型的大小未知或为零
如果我将扩展程序从 NODE.C 更改为 NODE.CPP ,则代码可以正常工作 有人可以解释为什么会这样吗?
答案 0 :(得分:7)
C中的空结构不合法。
根据C99标准,相关的语法产品是:
请注意, struct-declaration-list 不是可选的,并且必须始终至少有一个 struct-declaration 。
相比之下,这是C ++语法:
请注意, member-specification 是可选的。
另请注意,C ++中的空struct
的大小不为零。 C语言还要求所有对象都具有非零大小;您看到的错误消息并不准确(错误是正确的,但描述性消息不正确)。
答案 1 :(得分:4)
空结构是C中的语法错误。编写C语言的语法,以便禁止空结构。
但是在C ++中使用空结构是合法的。这就是为什么.C扩展名给你一个错误