我试图找出函数指针。我的代码看起来像这样我有file.h
我有一个有2个成员的结构
typedef struct _node_ {
char* string;
int (*compare)(int a, int b);
} node
在同一个文件中,我有一个名为的函数的原型:
void init_with_function_pointer(node* list, int (*comp)(int x, int y));
然后在我的file.c
中,我定义了函数:
void init_with_function_pointer(node* list, int (*comp)(int x, int y)){
node_init(list);
list->compare = comp;
}
并在我的main.c
int main(){
node tree;
init_with_function_pointer(&tree, /* what should I pass here */)
}
我需要指出的那个功能应该在file.c
但是我不能让它工作,如果我在main中定义函数并传递它,那么它可以工作,但是如果我尝试使用extern
用于我定义的相同函数file.c
编译器告诉我comp
未定义。
这是我的功能,我想指出:
extern int comp(int x,int y) {
if (x < y) {
return -1;
} else if(x == y) {
return 0;
} else {
return 1;
}
}
有人可以帮助我吗?
答案 0 :(得分:2)
您需要comp
中file.h
函数的原型:
int comp(int, int);
然后在main()
中写下:
init_with_function_pointer(&tree, comp);