-1

C のポインターと構造体の問題に直面しています。次のように言いましょう。

typedef struct mdata{
   int a;
   int b;
    ...
} pred_data_attr;

typedef struct mConfig{
   pred_data_attr mdata;
   ...
} mConfig;

struct control{
   struct mConfig mcfg;
   ...
};

INT32 rdfapp(struct control *rdf){
    pred_data_attr* mdata = rdf->mcfg.mdata;
    ...
}

このエラーが発生しました:

タイプ「pred_data_attr」を使用してタイプ「struct pred_data_attr *」を初期化するときの互換性のないタイプ

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

どうですか:

INT32 rdfapp(struct control *rdf)
{
  pred_data_attr * mdata = &rdf->mcfg.mdata;

コード内の命名は、不適切な命名がイライラやエラーにつながる別の良い例です。

異なるものに同じ名前を付けるのは得策ではありません:

pred_data_attr * mdata /* here mdata is a pointer */

pred_data_attr mdata; /* here mdata is the instance of a structure */

ネーミングを設定する方法はたくさんありますが、主に次のようなものであるため、ここではお勧めしません。

さまざまなものにさまざまな名前を付けます。

于 2013-07-01T08:23:42.907 に答える