1

ポインターに値を代入しようとするとエラーが発生します。

2 つの構造体を定義しました。

typedef struct {
    struct player *next; //pointers
    struct player *prev;
} player;

typedef struct {
    player onMe; //object
} field;

コードの後半で、構造体「player p」のインスタンスを作成し、それを使用してみます。fields[][] は、フィールド型の構造体を保持する配列です。

fields[p.x][p.y].onMe = *(p.next);
(*p.prev).next = &p.next;

これらの場合、「エラー:不完全な型へのポインターを逆参照しています」というメッセージが表示されます(&p.next)も試しましたが、同じ結果が得られました。

fields[x][y].onMe.prev = (&p);

この場合、「警告:互換性のないポインター型からの割り当て[デフォルトで有効]」が表示されます

誰かが私が間違っていることを教えてもらえますか?

4

3 に答える 3

0

どこにも宣言していないstruct playerため、構造体の定義は不完全です。試す

typedef struct player_s {
    struct player_s *prev;
    struct player_s *next;
} player;
于 2013-07-07T13:17:35.513 に答える
0

理由はstruct player不完全型だからです。playerで型を宣言しtypedefます。しかし、あなたはstruct playerその一部として使用してきましたが、これは現在または他のどこにも定義されていません。

次のようなものを使用する必要があります

typedef struct player {
    struct player *next; //pointers
    struct player *prev;
} player;
于 2013-07-07T13:19:11.180 に答える