#include<stdio.h>
struct Node
{
};
int main()
{
return 0;
}这个简单的代码是用文件名NODE.C保存的,这会产生一个错误:
错误NODE.C5:类型大小未知或为零
如果我将扩展从NODE.C更改为NODE.CPP,代码运行良好
有人能解释一下为什么会这样吗?
发布于 2014-12-04 17:43:21
空结构在C中是不合法的。
根据C99标准,相关的语法产品是:

请注意,结构声明列表不是可选的,必须始终至少有一个结构声明.
相反,下面是C++语法:

注意,成员规范是可选的。
还请注意,struct中的空C++将不具有零大小。C语言还要求所有对象都具有非零大小;所看到的错误消息不完全准确(错误是正确的,但描述性消息不是)。
发布于 2014-12-04 17:42:25
空结构是C语言中的一个语法错误。C语言的语法是用来禁止空结构的。
但是在C++中使用空结构是合法的。这就是为什么.C扩展给了您一个错误。
https://stackoverflow.com/questions/27300406
复制相似问题