与问题相关的声明是:
typedef void (*struct_c)(
pid_t,
const uint_t *,
struct_a,
struct_a,
void *);
void func1(struct_a s, struct_a e, struct_d init, struct_c range, struct_e fini, void *arg);
static void add_range(pid_t mgid, const uint_t *propids,struct_a s, struct_a e, void *arg);
有一个函数调用如下:
func1(s, e,NULL,add_range, NULL, &ranges);
参数add_range是一个函数名,没有该名称的其他变量。
我不明白函数调用func1是如何工作的以及它的参数是什么。
如果您需要更多详情,请与我们联系。
答案 0 :(得分:3)
struct_c
是一个函数指针
void func1(struct_a s, struct_a e, struct_d init, struct_c range, struct_e fini, void *arg);
说
在其第三个参数中包含函数指针,即struct_c range
,它匹配函数指针的原型
typedef void (*struct_c)(
pid_t,
const uint_t *,
struct_a,
struct_a,
void *);
和add_range
函数的原型。
static void add_range(pid_t mgid, const uint_t *propids,struct_a s, struct_a e, void *arg);
从微不足道的意义上说,
函数指针是函数,因为, 整数指针是整数等。
答案 1 :(得分:2)
struct_c
是一个指向函数的指针类型。
在func1
调用add_range
时,假定它具有适当的签名,则会隐式转换为所需的函数指针。
虽然这可能是一个糟糕的名字选择,我只能想象这里有遗产。