gpt4 book ai didi

c - 为什么 Turbo C++ 3.0 会为 C 程序提供 "size of the type is unknown or zero"错误?

转载 作者:行者123 更新时间:2023-12-02 05:49:28 25 4
gpt4 key购买 nike

#include<stdio.h>
struct Node
{

};
int main()
{
return 0;
}

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

ERROR NODE.C 5: Size of the type is unknown or zero

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

最佳答案

空结构在 C 中是不合法的。

从C99标准来看,相关的文法产生式是:

enter image description here

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

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

enter image description here

请注意,成员规范 是可选的。

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

关于c - 为什么 Turbo C++ 3.0 会为 C 程序提供 "size of the type is unknown or zero"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27300406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com