void delete_node(node_t *p, void *item) {
while(p -> next != NULL && (p->next)-> item != item) {
p = p -> next;
}
if (p -> next == NULL) {
printf ("The element you are searching for is not in the list\n");
}
node_t *temp;
temp = p -> next;
p -> next = temp -> next;
temp -> prev = p;
free(temp);
}
我在.c文件中有这段代码。
void delete_node(node_t *p, void *item);
这个原型是在一个.h文件中,我得到一个错误,上面写着“delete_node的冲突类型”和“之前的delete_node声明在这里”,我不知道为什么。
任何帮助将不胜感激。谢谢!
这是我的node_t结构:
typedef struct node {
void *item;
struct node *next;
struct node *prev;
} node_t;
答案 0 :(得分:1)
鉴于您有定义,此错误的最可能原因是您在编译器遇到声明或定义之前使用了delete_node
。如果是这种情况,则假定delete_node
的返回类型为int
。因此,当编译器稍后看到delete_node
的实际定义/声明时,它将产生该错误。
搜索delete_node
的使用,并确保在使用前始终处理delete_node
的定义。理想情况下,如果在.c
个文件中使用delete_node
,则应将其包含在.h
文件的顶部或头文件中