0

非常に簡単な質問があります。別の構造体の中で構造体を使用したいのですが、好きな順序でそれらを定義できるようにしたいのです。このようなもの:

// 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;
};

これどうやってするの?

4

1 に答える 1

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;

この理由は、コンパイラーは、構造体に到達するときに構造体の大きさを認識しなければならないからです。ポインターを使用する場合、特定のアーキテクチャーのポインター型はコンパイル時に既知のサイズであるため、コンパイラーが知る必要があるのは、その構造体型が単に存在することだけです。

于 2012-12-05T16:51:32.450 に答える