我有循环依赖的代码。
旧的a.h文件:
#ifndef A_H
#define A_H
#include "b.h"
typedef struct {
b_t *test;
} a_t;
#endif
旧的b.h文件:
#ifndef B_H
#define B_H
#include "a.h"
typedef struct {
a_t *test;
} b_t;
#endif
我只是想知道我的解决方案是否是解决该问题的“正确方法”。我希望生成漂亮而清晰的代码。
新的a.h文件:
#ifndef A_H
#define A_H
#include "b.h"
typedef struct b_t b_t;
struct a_t {
b_t *test;
};
#endif
新的b.h文件:
#ifndef B_H
#define B_H
#include "a.h"
typedef struct a_t a_t;
struct b_t {
a_t *test;
};
#endif
答案 0 :(得分:3)
您的方法存在的问题是typedef
的{{1}}位于a_t
,反之亦然。
一种更简洁的方法是将b.h
与结构保持一致,并在声明中使用结构标记,如下所示:
A.H
typedef
b.h
#ifndef A_H
#define A_H
struct b_t;
typedef struct a_t {
struct b_t *test;
} a_t;
#endif