#include<stdio.h>
struct Node
{
};
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个简单的代码以文件名NODE.C保存,这会产生错误:
ERROR NODE.C 5:类型的大小未知或为零
如果我将扩展名从NODE.C更改为NODE.CPP,代码
可以正常工作.有人可以解释为什么会发生这种情况吗?
空结构在C中不合法.
根据C99标准,相关的语法产品是:

请注意,struct-declaration-list不是可选的,并且必须始终至少有一个struct-declaration.
相比之下,这是C++语法:

请注意,member-specification是可选的.
另请注意,structC++ 中的空值不会为零.C语言还要求所有对象都具有非零大小; 您看到的错误消息不完全准确(错误是正确的,但描述性消息不是).