我的程序中有以下文件,带有某些功能定义的标题,以及带有函数体的程序。
something.h
typedef struct _foo {
int id;
int lucky_number;
} foo;
typedef void (*pointer_fc)(foo *);
void first(foo *);
void second(foo *);
void third(foo *);
extern pointer_fc fc_bases[3];
something.c
pointer_fc fc_bases[] = {first, second, third};
/* body of functions */
请注意,在头文件中我定义了一个指向函数的指针数组,在something.c
程序中,函数与数组的每个元素相关联。
我们假设在某个时刻我需要在main.c
程序中调用所有3个函数。有了这个,我如何使用extern指针数组在我的main.c
中调用这个函数。
答案 0 :(得分:1)
如果f1
声明如下,作为结构foo
的结构指针变量,
foo *f1;
然后你可以按如下方式调用函数first()和second(),
pointer_fc fc_bases[] = {first, second};
(*fc_bases[0])(f1);
(*fc_bases[1])(f1);
答案 1 :(得分:1)
当你调用它们时,函数指针会被自动解引用,所以它就像
一样简单foo f;
fc_bases[0](&f);
fc_bases[1](&f);
fc_bases[2](&f);