繁体   English   中英

Typedef用于相互指向的结构

[英]Typedef'ed structs that have pointers to each other

Ansi C允许两个不同的结构可以包含彼此的指针(也以结构形式显示 - 它们指向彼此 )。 我知道在许多情况下这不是一个好主意,但这不是问题。 是否有可能使用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的定义中使用它?

你可以这样做:

typedef struct a A;
typedef struct b B;

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

这对你有用吗?

问题是你已经输入了它。

你应该做这样的事情:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM