结构

时间:2017-10-14 07:16:54

标签: c pointers struct

我试图找出函数指针。我的代码看起来像这样我有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;
  }
}

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您需要compfile.h函数的原型:

int comp(int, int);

然后在main()中写下:

init_with_function_pointer(&tree, comp);