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

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调用此函数。

===============>>#1 票数:1

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

foo *f1;

然后,您可以按以下方式调用函数first()和second(),

pointer_fc fc_bases[] = {first, second};

(*fc_bases[0])(f1);

(*fc_bases[1])(f1);

===============>>#2 票数:1 已采纳

调用函数指针时,它们会自动取消引用,因此它非常简单

foo f;
fc_bases[0](&f);
fc_bases[1](&f);
fc_bases[2](&f);

  ask by SealCuadrado translate from so

未解决问题?本站智能推荐: