在讲师提供的代码中有:

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/

10-12 03:10
查看更多