1

したがって、基本的に、2 つの異なる .h ファイル (vcard.h と bst.h) で定義された 2 つの異なる構造があり、どちらも現在のファイルに含まれています。構造体の定義は次のとおりです。

struct bst {
  vcard *c;
  bst *lsub;
  bst *rsub;
};

struct vcard {
  char *cnet;
  char *email;
  char *fname;
  char *lname;
  char *tel;
};

私のbst挿入機能では、次を実行しようとしています:

bst *bst_insert(bst *t, vcard *c){

    if (strcmp(c->cnet, t->c.cnet) > 0){
    ...
    }
}

コンパイラは次のエラーを吐き出しています:

「bst.c:28: エラー: 構造体または共用体ではないメンバー 'cnet' の要求」

t->c.cnet を間違って呼び出していますか?

4

3 に答える 3

0

余談ですが、.演算子を使用して、構造体へのポインターのメンバーにアクセスすることもできます。優先順位のために、最初に括弧でポインタを逆参照する必要があります。その後、そのようにメンバーにアクセスできますt->(*c).cnet。表記は、->これを行うための簡単な方法として作成されました。

于 2013-03-08T05:07:46.043 に答える