我有以下代码:
void delete_linkedlist(LinkedList* ll,void (*destroy_data)(void*)){
if(!ll->next){//check if next exists
delete_linkedlist(ll->next,destroy_data);//recursive call
if(destroy_data){ //if we can destroy the data
destroy_data(ll->data); //destroy data
free(ll);
}
}else{
free(ll); //else just free the linked list
}
}
void delete_hashmap(HashMap* hm,void (*destroy_data)(void*)){
for(int i=0;i<hm->key_space;i++){//loop over every set of linked lists
LinkedList* loc = hm->datapointers[i];
if(loc) //if not null
delete_linkedList(loc,destroy_data);//delete linked list <<<this goes wrong?
}
}
这将使用make:undefined reference to
delete_linkedList'`返回以下错误
但对我来说它看起来不应该是一个问题,因为delete_linked_list是直接在使用它的函数上面定义的。并且使用与上面定义的相同的参数调用,任何人都知道这里有什么问题吗?
答案 0 :(得分:2)
delete_linkedList
检查您的案例delete_linkedlist()
答案 1 :(得分:1)
C和Linux区分大小写。 delete_linkedlist()
和delete_linkedList()
在C和Linux中并不相同。您将函数定义为delete_linkedlist()
并调用delete_linkedList()
,因此出错。在发布问题之前,您应该使用优秀的编辑器搜索错误中报告的确切字符串。