0

次のような構造体がある場合:

typedef struct bag {
  int test;
} *bag;

次に、関数がバッグを消費する場合。まあ言ってみれば:

int sample(bag *b) {
    b->test ...
}

構造体でも共用体でもないメンバー 'b' を要求したというエラーが表示されます。これを修正するにはどうすればよいですか? b を a (struct bag *) にキャストできましたが、それは不合理に思えます。

4

2 に答える 2

4

bagtype を typeへのポインタとして定義しましたstruct bag。したがって、 typebag *bの変数を作成すると、実質的に type の変数が作成されますstruct bag**。引数を に変更するかbag b、メンバー ( (*b)->test) に対して二重逆参照を実行します。

編集 別のポスターが述べたように、おそらくあなたは を意味していtypedef struct bag { ... } bagたので、元のコードはコンパイルされます。

于 2012-09-15T06:05:00.453 に答える
2

決定する必要があります: bag は構造体へのポインターの名前であるか、bag は構造体の名前です: おそらくあなたが意図したものです

typedef struct bag {
   int test;
} bag;

次に、コードがコンパイルされます。

于 2012-09-15T06:07:41.817 に答える