为什么Turbo C++ 3.0为C程序提供"类型大小未知或零"错误?

Sid*_*ril 2 c turbo-c++

#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,代码
可以正常工作.有人可以解释为什么会发生这种情况吗?

Ben*_*igt 7

空结构在C中不合法.

根据C99标准,相关的语法产品是:

在此输入图像描述

请注意,struct-declaration-list不是可选的,并且必须始终至少有一个struct-declaration.

相比之下,这是C++语法:

在此输入图像描述

请注意,member-specification是可选的.

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


小智 5

空结构是C语言中的语法错误。编写C语言语法是为了禁止空结构。

但是在C ++中使用空结构是合法的。这就是为什么.C扩展名给您错误的原因