Typedef用于相互指向的结构

时间:2011-09-04 19:16:05

标签: c typedef

Ansi C允许两个不同的结构可以包含彼此的指针(也显示在structs-that-refer-to-each-other中)。我知道在许多情况下这不是一个好主意,但这不是问题。是否可以使用typedef'ed结构实现相同的效果?

以下代码运作正常。

struct b;
typedef struct a {
    struct b *bb;
} A;
typedef struct b {
    struct a *aa;
} B;

但是使用“B”型则失败

typedef struct b B;
typedef struct a {
    B *bb;
} A;
typedef struct b {
    A *aa;
} B;

  

错误:重新定义typedef'B'

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

2 个答案:

答案 0 :(得分:10)

您可以这样做:

typedef struct a A;
typedef struct b B;

struct a {
    B *bb;
};
struct b {
    A *aa;
};

这对你有用吗?

答案 1 :(得分:3)

问题是你已经输入了它。

你应该这样做:

struct a;
struct b;
typedef struct a A;
typedef struct b B;

然后你可以定义结构a和b并在a和b的定义中使用a,b,A *,B *