我正在尝试处理这样定义的结构列表:
typedef struct {
item_s item;
struct node_s *next;
} node_s;
当我尝试这样做时:
...
node_s *newnode = malloc(sizeof(node_s));
node_s *newnode = malloc(sizeof(node_s));
head->next = newnode
它给出了这个错误:“从不兼容的指针类型'node_s *'[-Win兼容指针类型]分配给'struct node_s *'” 看起来“struct node_s *”是与指向定义为“node_s *”的结构的指针不同的指针类型。我有点困惑。
我尝试将结构体中的“下一个”指针定义为“node_s *”,但正如我所料,它不起作用,因为结构体node_s本身尚未定义。
您已定义类型
node_s
,但未定义类型 struct node_s
。
// Defines `struct node_s`.
struct node_s {
item_s item;
struct node_s *next;
};
// Defines `node_s`.
typedef struct node_s node_s;
或者一起:
// Defines both `struct node_s` and `node_s`.
typedef struct node_s {
item_s item;
struct node_s *next;
} node_s;