之前的___声明在这里?

时间:2013-04-01 18:54:34

标签: c list

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;

1 个答案:

答案 0 :(得分:1)

鉴于您有定义,此错误的最可能原因是您在编译器遇到声明或定义之前使用了delete_node。如果是这种情况,则假定delete_node的返回类型为int。因此,当编译器稍后看到delete_node的实际定义/声明时,它将产生该错误。

搜索delete_node的使用,并确保在使用前始终处理delete_node的定义。理想情况下,如果在.c个文件中使用delete_node,则应将其包含在.h文件的顶部或头文件中