次のような構造体がある場合:
typedef struct bag {
int test;
} *bag;
次に、関数がバッグを消費する場合。まあ言ってみれば:
int sample(bag *b) {
b->test ...
}
構造体でも共用体でもないメンバー 'b' を要求したというエラーが表示されます。これを修正するにはどうすればよいですか? b を a (struct bag *) にキャストできましたが、それは不合理に思えます。
bagtype を typeへのポインタとして定義しましたstruct bag。したがって、 typebag *bの変数を作成すると、実質的に type の変数が作成されますstruct bag**。引数を に変更するかbag b、メンバー ( (*b)->test) に対して二重逆参照を実行します。
編集
別のポスターが述べたように、おそらくあなたは を意味していtypedef struct bag { ... } bagたので、元のコードはコンパイルされます。
決定する必要があります: bag は構造体へのポインターの名前であるか、bag は構造体の名前です: おそらくあなたが意図したものです
typedef struct bag {
int test;
} bag;
次に、コードがコンパイルされます。