如何解决C中的循环结构依赖

dan*_*705 1 c struct circular-dependency include circular-reference

所以我有两个结构体,为了简单起见,我们将它们称为ABA包含一个指向 的指针B,并B包含一个A。所以这里是代码:

#ifndef A_H
#define A_H

#include "b.h"

typedef struct _A {
    B *b;
} A;

#endif
Run Code Online (Sandbox Code Playgroud)

#ifndef B_H
#define B_H

#include "a.h"

typedef struct _B {
    A a;
} B;

#endif
Run Code Online (Sandbox Code Playgroud)

现在的问题是,当我从我的主 c 文件中导入 ah 时,我收到关于 A 是如何从 bh 未知类型的错误我不知道如何解决这个问题。

小智 7

这样做的方法是使用空定义预定义结构

typedef struct _A A;
typedef struct _B B;

typedef struct _A {
    B *b;
} A;

typedef struct _B {
    A a;
} B;
Run Code Online (Sandbox Code Playgroud)

您可以将预定义放在全局包含文件中,以便从您需要的任何位置包含。

`