是否有另一种语法来定义函数指针的类型



对于函数指针的类型定义,我们这样做,

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

的函数的指针。

最新更新