1

ねえ、私がこのようなことをしようとすると、私はそのエラーを受け取ります:

void swap(struct lnode* n1){
    struct lnode*temp = n1->next;
}

一時ポインターがn1->nextを指すようにできると思いましたが、不完全な型エラーへの間接参照ポインターが表示されます。誰か助けてもらえますか?

ありがとう

4

3 に答える 3

2

構造体のメンバーにアクセスするには、次のような宣言では不十分です。

struct lnode;

これにより、型が不完全になります。コンパイラは構造体の名前を認識しますが、構造体に含まれるフィールドを認識しません。不完全な型へのポインタを持つことはできますが、それらのメンバーにアクセスしたり、それらのサイズを計算したり、構造体メンバーの知識を必要とするその他のことを行うことはできません。

完全な定義が必要です。のように:

struct lnode
{
    struct lnode *next;
    /* other fields */
};
于 2012-10-10T23:14:51.633 に答える
0

struct lnodeスコープ内の完全な宣言が必要です。それ以外の場合、コンパイラはメンバーの場所をどのように認識しますnextか?

于 2012-10-10T23:13:42.577 に答える
0

あなたの質問は、コンパイラがlnodeが何であるか、つまりstructlnodeの全体像を把握していないことを示唆しています。私たちが手伝ってくれるように、コードをもう少し投稿できるかもしれません。

于 2012-10-11T01:12:16.820 に答える