【发布时间】:2015-03-12 13:15:19
【问题描述】:
我有两个模块,a 和 b。
啊哈:
#ifndef A_H_
#define A_H_
#include "b.h"
typedef struct {
b_t *b;
...
} a_t;
#endif // A_H_
b.h:
#ifndef B_H_
#define B_H_
#include "a.h"
typedef struct {
a_t *a;
...
} b_t;
#endif // B_H_
如何更改它以使其能够编译? (我想保留两个独立的编译单元。)
编辑:我忘了让结构成员指针。
【问题讨论】:
-
我首先想到的是指针的成员(仍然是有问题的设计,但至少可以通过前向声明并给至少一个结构一个标签)......这应该做什么?这两种结构都需要无限量的内存,出于同样的原因,您不能使用
struct foo { struct foo f; };。 -
最后一点:不要使用
_t作为类型的后缀。以_t结尾的标识符由POSIX 保留。
标签: c struct circular-dependency