C 结构体列表不兼容的指针类型

问题描述 投票:0回答:1

我正在尝试处理这样定义的结构列表:

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本身尚未定义。

c list pointers
1个回答
0
投票

您已定义类型

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;
© www.soinside.com 2019 - 2024. All rights reserved.