是否有 typedef 函数指针的替代语法?
Is there an alternate syntax to typedef function pointers?
对于函数指针的类型定义,我们做这样的事情,
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
是一个接受指向 char 和 return 和 int 的指针的函数。 您可以使用 rt_icpfunct_t
代替普通类型 ,因此 rl_icpfunc_t *func
意味着 func
是指向类型 rt_icpfunct_t
的函数的指针
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 (*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
是一个接受指向 char 和 return 和 int 的指针的函数。 您可以使用 rt_icpfunct_t
代替普通类型 ,因此 rl_icpfunc_t *func
意味着 func
是指向类型 rt_icpfunct_t
的函数的指针
typedef int rl_icpfunc_t (char *);
正在将函数原型定义为类型。
rl_icpfunc_t * func;
定义func
为指向前者的指针。
这与直接通过以下方式定义函数指针类型相反:
typedef int (*prl_icpfunc_t) (char *);
prl_icpfunc_t func;
这两种方法的结果是相同的:一个指针 func
,指向一个返回 int
并接受一个参数的函数,即 char*
.