是否有替换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类型函数的指针