我定义了一些相互引用的结构,并在使用它们之前对结构进行类型定义,因此每个结构都“了解”其他结构(如果没有这个,就会出现编译错误)。不确定这是否必要或正确。
现在,当使用 gcc 编译时,我收到“redefinition of 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;
};
UPDATE:愚蠢、糟糕的复制粘贴导致此标头在另一个文件中被包含两次。我是 C 新手,认为这一定与文件中的结构两次有关。感谢@Kevin Ballard 的提醒。
这是为什么需要标头/包含防护的一个很好的例子:
#ifndef MY_HEADER_FILE
#define MY_HEADER_FILE
typedef struct a A;
typedef struct b B;
/* ... */
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)