【发布时间】:2014-04-22 18:12:06
【问题描述】:
我正在尝试通过将内存分配给指向队列的指针来创建队列,但是当我在 size 槽中写入结构的名称时出现此错误。我真的不知道怎么解释,所以代码:
结构,在 queue.c 中定义:
struct queue {
Node front;
Node back;
int num;
int (*e_func)(Elem,Elem);
};
typedef struct node* Node;
struct node {
Elem e;
Node next;
Node prev;
};
队列.h:
#ifndef QUEUE_H
#define QUEUE_H
#include <malloc.h>
#include <stdlib.h>
typedef struct queue* Queue;
typedef void* Elem;
Queue CreateQ(int (*equals)(Elem,Elem));
void Enqueue(Queue Q, Elem e);
Elem Dequeue();
Elem front(Queue Q);
Elem back(Queue Q);
int size(Queue Q);
int isIn(Queue Q, Elem e);
#endif
队列的使用,在funcs.c中:
Queue Q = (Queue)malloc(sizeof(struct queue));
将鼠标悬停在 sizeof() 参数中的 struct 上时会显示错误。我到底做错了什么?我记得过去做过类似的事情,而且效果很好。我相信这可能与节点中的 void 指针有关,但是我该如何解决呢?
【问题讨论】:
-
将
typedef struct node* Node;移动到struct queue的定义之上,也许?
标签: c struct incomplete-type