尝试为指针赋值时出错。
我已经定义了2个结构:
typedef struct {
struct player *next; //pointers
struct player *prev;
} player;
typedef struct {
player onMe; //object
} field;
稍后在代码中,我创建了一个struct“player p”的实例并尝试使用它: fields [] []是一个包含类型字段结构的数组。
fields[p.x][p.y].onMe = *(p.next);
(*p.prev).next = &p.next;
在这些情况下,我得到“错误:解除指向不完整类型的指针” 我也试过(& p.next),但结果相同。
fields[x][y].onMe.prev = (&p);
在这种情况下,我得到“警告:从不兼容的指针类型[默认启用]”
进行分配有人能告诉我我做错了吗?
答案 0 :(得分:0)
您不会在任何地方声明struct player
,因此结构的定义不完整。尝试
typedef struct player_s {
struct player_s *prev;
struct player_s *next;
} player;
答案 1 :(得分:0)
原因是struct player
是不完整的类型。您使用player
声明typedef
类型。但是你使用struct player
作为其部分,现在或其他任何地方都没有定义。
您应该使用类似
的内容typedef struct player {
struct player *next; //pointers
struct player *prev;
} player;
答案 2 :(得分:0)
可能会为 array.onMe 指定另一个struct A指针。
那么,为什么要将ptr地址分配给另一个ptr?可能是你想要指定一个ptr指向另一个指针的地址,如下所示:
(*p.prev).next = p.next