typedef struct {
int pid;
struct f_queue_node *next;
}f_queue_node;
typedef struct {
f_queue_node *front, *rear;
}f_queue;
f_queue *queue;
f_queue_node *node
queue->rear->next = node;
每当在前后使用f_queue_node指针时,都会收到警告。
queue_f.c:39:21:警告:来自不兼容指针类型[-Wincompatible-pointer-types]的赋值
queue-> rear-> next =节点; ^
答案 0 :(得分:3)
使用此:
typedef struct f_queue_node {
int pid;
struct f_queue_node *next;
} f_queue_node;
代替:
typedef struct {
int pid;
struct f_queue_node *next;
} f_queue_node;
发生这种情况是因为您typedef
和anonymous struct
。
此外,您在semicolon
上错过了f_queue_node *node
,我不知道您是否在此处或在代码中发布时错过了它。
答案 1 :(得分:1)
您已经将next
(匿名结构的typedef)的f_queue_node
字段定义为指向struct f_queue_node
的指针,但是您在任何地方都没有定义struct f_queue_node
在您的代码中。
您需要给该匿名结构添加一个标签:
typedef struct f_queue_node {
int pid;
struct f_queue_node *next;
}f_queue_node;
答案 2 :(得分:0)
没有分配队列和节点就不能分配节点。
您必须在堆栈上分配:
f_queue queue;
f_queue_node node
queue.rear->next = &node;
或使用malloc在堆上:
f_queue *queue = malloc(sizeof(f_queue));
f_queue_node *node = malloc(sizeof(f_queue_node));
queue->rear->next = node;