是否有替换typedef函数指针的语法?
为了为函数指针做一个typedef,我们做这样的事情,
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;
两个approches的结果是相同的:一个指针func
,指向一个返回int
并取一个参数的函数,即char*
。
使用typedef int rl_icpfunc_t(char *)是否正确; ?
是的,这意味着rl_icpfunc_t
是一个函数,它接受一个指向char和return和int的指针。 您可以使用rt_icpfunct_t
代替普通类型 ,因此rl_icpfunc_t *func
意味着func
是指向rt_icpfunct_t
类型函数的指针