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

您可以为array.onMe分配另一个结构 A 指针。
顺便问一下,为什么要将ptr地址分配给另一个ptr?可能您想将 ptr 指向的地址分配给另一个指针,如下所示:

(*p.prev).next = p.next
于 2013-07-07T13:38:19.137 回答
0

原因是struct player不完整的类型。你用 . 声明player类型typedef。但是您已将其用作struct player它的一部分,现在或其他任何地方都没有定义。

你应该使用类似的东西

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