gpt4 book ai didi

c - 以前的 ___ 声明在这里?

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:38 25 4
gpt4 key购买 nike

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);

这个原型(prototype)在 .h 文件中,我收到一条错误消息,提示“delete_node 的类型冲突”和“delete_node 的先前声明在这里”,我不知道为什么。

如有任何帮助,我们将不胜感激。谢谢!!

这是我的 node_t 结构:

typedef struct node {
void *item;
struct node *next;
struct node *prev;
} node_t;

最佳答案

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

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

关于c - 以前的 ___ 声明在这里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com