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

时间:2014-12-04 17:35:58

标签: c turbo-c++

#include<stdio.h>
struct Node
{

};
int main()
{
   return 0;
}

这个简单的代码以文件名 NODE.C 保存,这会出错:

  

ERROR NODE.C 5:类型的大小未知或为零

如果我将扩展程序从 NODE.C 更改为 NODE.CPP ,则代码可以正常工作 有人可以解释为什么会这样吗?

2 个答案:

答案 0 :(得分:7)

C中的空结构不合法。

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

enter image description here

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

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

enter image description here

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

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

答案 1 :(得分:4)

空结构是C中的语法错误。编写C语言的语法,以便禁止空结构。

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