1

我的程序中有以下文件,一个带有某些函数定义的头文件,以及一个带有函数体的程序。

某事.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];

某事.c

pointer_fc fc_bases[] = {first, second, third};

/* body of functions */

请注意,在标题中,我定义了一个指向函数的指针数组,并且在something.c程序中,函数与数组的每个元素相关联。

假设在某个时刻我需要在main.c程序中调用所有 3 个函数。有了这个,我如何使用 extern 指针数组在我的main.c.

4

2 回答 2

1

如果f1如下声明为结构体的结构体指针变量foo

foo *f1;

然后你可以调用函数 first() 和 second() 如下,

pointer_fc fc_bases[] = {first, second};

(*fc_bases[0])(f1);

(*fc_bases[1])(f1);
于 2013-04-16T01:52:31.443 回答
1

调用函数指针时会自动取消引用,所以它很简单

foo f;
fc_bases[0](&f);
fc_bases[1](&f);
fc_bases[2](&f);
于 2013-04-16T02:00:55.270 回答