我正在定义一些相互引用的结构体,并在使用之前对它们进行了 typedef,以便每个结构体“知道”其他结构体(如果没有这样做,会出现编译错误)。不确定这是否必要或正确。
现在,在使用 gcc 编译时,我收到“typedef 重定义”的警告。应该如何正确处理?
typedef struct a A;
typedef struct b B;
typedef struct c C;
struct a {
B* list;
A* parent;
};
struct b {
A* current;
B* next;
};
struct c {
A* current;
A* root;
};
更新:由于愚蠢的复制粘贴,导致此标题在另一个文件中被重复包含。我对C语言不是很熟悉,以为这与在文件中两次使用结构体有关。感谢@Kevin Ballard提醒。