【发布时间】:2020-07-22 02:07:25
【问题描述】:
即使我尝试切换结构的位置以便它们将在正确的位置声明,但仍会出现此错误.. 这种方式似乎是正确的顺序,但仍然出现此错误。 似乎是什么问题?
typedef struct YListNode {
int Yval;
YListNode *next;
}YListNode;
typedef struct YList {
YListNode *head;
YListNode *tail;
}YList;
typedef struct XListNode {
XListNode * prev;
int Xval;
YList yList;
XListNode *next;
}XListNode;
typedef struct List {
XListNode *head;
XListNode *tail;
}List;
【问题讨论】:
-
因为
typedef没有完成,你不能在正在定义的结构中使用typedef 的名称:YListNode *next;无效。但是你可以使用它的struct名称:struct YListNode *next; -
尝试使用你正在定义的结构的前向声明,参考here。
-
同时拥有
struct YListNode和YListNode不是一个好主意(令人困惑)。一个好的解决方案是在 typedef 的名称前面加上一个小的t,意思是“类型”,例如struct YListNode {...} tYlistNode; -
您可能会告诉我们哪个编译器会打印该消息,以及除了纯数字之外是否还有更具描述性的文本。