gpt4 book ai didi

c - 结构中的函数指针

转载 作者:行者123 更新时间:2023-12-01 01:25:09 24 4
gpt4 key购买 nike

我试图找出函数指针。我的代码看起来像这样 我有一个 file.h 我有一个有 2 个成员的结构

typedef struct _node_ {
char* string;
int (*compare)(int a, int b);
} node

在同一个文件中,我有一个函数原型(prototype):

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 中定义函数并传递它,那么它就可以工作,但是如果我尝试对我定义的同一个函数使用 externfile.c 中,编译器告诉我 comp 未定义。

这是我要指出的功能:

extern int comp(int x,int y) {
if (x < y) {
return -1;
} else if(x == y) {
return 0;
} else {
return 1;
}
}

有人可以帮助我吗?

最佳答案

您需要 file.h 中的 comp 函数原型(prototype):

int comp(int, int);

然后在 main() 中你写:

init_with_function_pointer(&tree, comp);

关于c - 结构中的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46741943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com