未定义引用看起来正常的函数

时间:2014-11-28 10:27:51

标签: c compiler-errors linked-list undefined

我有以下代码:

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是直接在使用它的函数上面定义的。并且使用与上面定义的相同的参数调用,任何人都知道这里有什么问题吗?

2 个答案:

答案 0 :(得分:2)

delete_linkedList

检查您的案例delete_linkedlist()

答案 1 :(得分:1)

C和Linux区分大小写。 delete_linkedlist()delete_linkedList()在C和Linux中并不相同。您将函数定义为delete_linkedlist()并调用delete_linkedList(),因此出错。在发布问题之前,您应该使用优秀的编辑器搜索错误中报告的确切字符串。