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的定义中使用它?
答案 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 *