在结构中以任何顺序使用struct(C)

时间:2012-12-05 16:46:00

标签: c struct definition

我有一个非常简单的问题:我想在另一个结构中使用结构但我希望能够以我想要的任何顺序定义它们。 像这样:

// User type definition
typedef struct type1{
    int i;
    type2 t;
};
// User type definition
typedef struct type2{
    int i;
    type3 t;
};
// User type definition
typedef struct type3{
    int i;
};

我该怎么做?

1 个答案:

答案 0 :(得分:1)

实现这一目标的唯一方法是使用指向结构的指针而不是静态成员:

typedef struct type1 {
    int i;
    struct type2 *t;
} type1;
// User type definition
typedef struct type2 {
    int i;
    struct type3 *t;
} type2;
// User type definition
typedef struct type3 {
    int i;
} type3;

原因是编译器必须知道结构到达它有多大。如果使用指针,那么编译器需要知道的是结构类型只是存在,因为给定体系结构上的指针类型在编译时是已知大小