在sortComp.c中调用freeHeap函数时遇到问题
我这样称呼它
heapRef myHeap = buildHeap(numData, heapSort, numData);
freeHeap(myHeap);
编译时,我收到错误“未定义对‘freeHeap’的引用”
我包括heap.h和heap.h的内部,我已经声明了freeHeap
void freeHeap(heapRef *);
我就是这样编的
gcc -o sortComp sortComp.c insertionSort.c heap.c insertionSort.h heap.h
它在heap.c中定义为
void freeHeap(heapRef *pH){
heapRef H = *pH;
free(H->data);
free(H);
}
固定的:
我改变了
自由堆(myHeap);
到
freeHeap(&myHeap);
它不再抱怨了
最佳答案
在freeHeap()
中的函数heap.h
声明中使用此选项:
extern void freeHeap(heapRef*);
编辑耶稣基督,你的论点与原型不符,就像你的声明与你的定义不符一样。所以你的论点必须是
freeHeap()
类型而不是heapRef*
。在你的程序中,当你应该通过heapRef
时myHeap
是heapRef
类型。使用这个:freeHeap(&myHeap);