的函数的指针。
对于函数指针的类型定义,我们这样做,
typedef int (*func) (char*);
typedef struct{
char * name;
func f1;
}
与此相反,我遇到了一段我不理解的代码。
typedef int rl_icpfunc_t (char *);
typedef struct {
char *name; /* User printable name of the function. */
rl_icpfunc_t *func; /* Function to call to do the job. */
char *doc; /* Documentation for this function. */
}COMMAND;
这是libedit库示例中的代码片段。有人能给我解释一下吗?
typedef int rl_icpfunc_t (char *);
将函数原型定义为类型。
rl_icpfunc_t * func;
定义func
为指向前者的指针。
这与直接通过
定义函数指针类型相反:typedef int (*prl_icpfunc_t) (char *);
prl_icpfunc_t func;
两种方法的结果是相同的:一个指针func
,指向一个返回int
并接受一个参数的函数,即char*
。
是否正确使用typedef int rl_icpfunc_t (char *); ?
是的,这意味着rl_icpfunc_t
是一个函数,它接受一个指向char和int的指针。您可以使用rt_icpfunct_t
来代替普通类型,因此rl_icpfunc_t *func
意味着func
是指向类型为rt_icpfunct_t