在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*。在你的程序中,当你应该通过heapRefmyHeapheapRef类型。使用这个:
freeHeap(&myHeap);

10-08 03:54