定义结构时避免“重新定义 typedef”警告

2023-12-09

我定义了一些相互引用的结构,并在使用它们之前对结构进行类型定义,因此每个结构都“了解”其他结构(如果没有这个,就会出现编译错误)。不确定这是否必要或正确。

现在,当使用 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(使用前将#替换为@)

定义结构时避免“重新定义 typedef”警告 的相关文章

随机推荐