2
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;
4

1 回答 1

1

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

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

于 2013-04-01T19:00:24.657 回答