这是解决循环 typedef 依赖的正确方法吗?
我有具有循环依赖的代码。
旧的 ah 文件:
#ifndef A_H
#define A_H
#include "b.h"
typedef struct {
b_t *test;
} a_t;
#endif
旧的 bh 文件:
#ifndef B_H
#define B_H
#include "a.h"
typedef struct {
a_t *test;
} b_t;
#endif
我只是想知道我的解决方案是否是解决该问题的“正确方法”。我想要生成漂亮且清晰的代码。
新的 ah 文件:
#ifndef A_H
#define A_H
#include "b.h"
typedef struct b_t b_t;
struct a_t {
b_t *test;
};
#endif
新的 bh 文件:
#ifndef B_H
#define B_H
#include "a.h"
typedef struct a_t a_t;
struct b_t {
a_t *test;
};
#endif
I have code with circular dependency.
old a.h file:
#ifndef A_H
#define A_H
#include "b.h"
typedef struct {
b_t *test;
} a_t;
#endif
old b.h file:
#ifndef B_H
#define B_H
#include "a.h"
typedef struct {
a_t *test;
} b_t;
#endif
I've just wanted to know if my solution is "proper way" to solve that problem. I want produce nice and clear code.
new a.h file:
#ifndef A_H
#define A_H
#include "b.h"
typedef struct b_t b_t;
struct a_t {
b_t *test;
};
#endif
new b.h file:
#ifndef B_H
#define B_H
#include "a.h"
typedef struct a_t a_t;
struct b_t {
a_t *test;
};
#endif
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的方法的一个问题是
a_t
的typedef
位于bh
中,反之亦然。一种更简洁的方法是将您的
typedef
与结构一起保留,并在声明中使用结构标签,如下所示:ah
bh
A problem with your approach is that the
typedef
fora_t
is in theb.h
, and vice versa.A somewhat cleaner way would be to keep your
typedef
with the struct, and use structure tags in the declarations, like this:a.h
b.h