在C中定义相互参照结构

时间:2011-11-01 20:37:39

标签: c pointers struct typedef

如果我要对以下内容进行编码:

typedef struct {
    int a;
    PTR1 bpointer;
} *PTR2;

typedef struct {
    int b;
    PTR2 cpointer;
} *PTR1;

我在PTR2之后定义了PTR1,但是如果首先使用它,那么它可能是编译时或运行时错误。那么如何避免任何此类错误并使用两个参考结构?我认为我们在两个相互依存的类中做的事情是一样的。那么有可能它不会显示任何错误,因为我们此时只是定义它们并且在调用这两个错误时已经定义了吗?混淆了一点。

我非常感谢您抽出时间看我的问题和努力。

感谢

1 个答案:

答案 0 :(得分:3)

第一步是摆脱typedef并使用struct标签。然后,您可以转发声明struct标记,并在您仍想使用它们时单独生成typedef。请注意,使用typedef定义指向结构类型的类型被认为是非常糟糕的样式,特别是如果在完成时无法引用指向的类型。

struct struct1;
struct struct2;

struct struct2 {
    int a;
    struct struct1 *bpointer;
};

struct struct1 {
    int b;
    struct struct2 *cpointer;
};