在讲师提供的代码中有:
typedef int (*avltree_cmp_fn_t)(const struct avltree_node *, const struct avltree_node *);
int avltree_init(struct avltree *tree, avltree_cmp_fn_t cmp, unsigned long flags);
在定义my_cmp函数之后...
int my_cmp(const struct avltree_node *a, const struct avltree_node *b)
{
struct my_struct *p = avltree_container_of(a, my_struct, node);
struct my_struct *q = avltree_container_of(b, my_struct, node);
return p->key - q->key;
}
并将其作为参数传递给avltree_init ...
avltree_init(&tree, my_cmp, 0);
我得到:
未定义对`avltree_init(avltree *,int(*)(avltree_node const *,avltree_node const *),unsigned long)的引用
有人可以解释一下为什么会发生,我在哪里犯了错误?
谢谢!
最佳答案
从错误消息看来,您没有链接到包含avltree_init函数的文件。您需要将所有文件(包括包含该功能的文件)链接到最终应用程序。此错误来自链接阶段,而不是来自编译阶段。
此外,我从您的错误消息中看到您正在使用C ++编译器进行C代码。您不需要这样做:使用C编译器会更好。
关于c - 对avltree_init的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29173865/