【发布时间】:2015-02-02 17:01:18
【问题描述】:
#include<stdio.h>
struct Node
{
};
int main()
{
return 0;
}
这个简单的代码以文件名 NODE.C 保存,这会产生错误:
ERROR NODE.C 5:类型的大小未知或为零
如果我将扩展名从 NODE.C 更改为 NODE.CPP
,代码可以正常工作
有人可以解释为什么会这样吗?
【问题讨论】:
-
用 Clang 编译它(一个不会过时的非可怕/可怕/糟糕的编译器)实际上提供了有用的信息:警告:空结构是 GNU 扩展 [-Wgnu-empty -struct]
-
你的结构中至少需要一个成员。
-
Here are some pictures of Turbo C++ 3.0 at work。我特别喜欢this one,它的“1990, 1992”版权声明。对于那些在家记分的人来说,这个软件已经 24 岁了,并且比实际的 C++ 语言(正如我们今天所知,即标准化)早了 8 年。
-
@remyabel:为什么增加一个成员比如 Node *next; 仍然不能解决问题?它给出了一个声明缺失错误。出了什么问题?
-
@Sidsec9:在 C 中,
Node*没有命名类型。你需要struct Node* next;