Typedef用于相互指向的结构

Ger*_*ncy 5 c typedef

Ansi C允许两个不同的结构可以包含彼此的指针(也以结构形式显示 - 它们指向彼此).我知道在许多情况下这不是一个好主意,但这不是问题.是否有可能使用typedef'ed结构实现相同的?

下面的代码工作得很好.

struct b;
typedef struct a {
    struct b *bb;
} A;
typedef struct b {
    struct a *aa;
} B;
Run Code Online (Sandbox Code Playgroud)

但使用"B"型则失败了

typedef struct b B;
typedef struct a {
    B *bb;
} A;
typedef struct b {
    A *aa;
} B;
Run Code Online (Sandbox Code Playgroud)

错误:重新定义typedef'B'

是否有可能告诉编译器稍后将声明'B'并在A的定义中使用它?

cni*_*tar 10

你可以这样做:

typedef struct a A;
typedef struct b B;

struct a {
    B *bb;
};
struct b {
    A *aa;
};
Run Code Online (Sandbox Code Playgroud)

这对你有用吗?