为了对函数指针执行typedef,我们做了类似的事情,
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;
与此相反,我遇到了一个我不明白的代码。
protected override void Load(ContainerBuilder builder)
{
builder.Register(
c => (HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>())
.FindById(HttpContext.Current.User.Identity.GetUserId())).As<ApplicationUser>();
}
这是libedit库示例的代码片段。有人可以向我解释一下吗?
答案 0 :(得分:8)
rl_icpfunc_t * func;
将函数原型定义为类型。
func
将typedef int (*prl_icpfunc_t) (char *);
prl_icpfunc_t func;
定义为指向前者的指针。
这与通过以下方式直接定义函数指针类型相反:
func
两个approches的结果是相同的:一个指针int
,指向一个函数返回char*
并取一个参数,即Get-WmiObject "win32_serialport"
。
答案 1 :(得分:3)
使用 typedef int rl_icpfunc_t(char *); 是否正确?
是的,这意味着rl_icpfunc_t
是一个函数,它接受一个指向char和return和int的指针。 您可以使用rt_icpfunct_t
代替普通类型,因此rl_icpfunc_t *func
表示func
是指向rt_icpfunct_t
类型函数的指针