是否有替代语法来设置typedef函数指针?

时间:2015-08-18 07:18:03

标签: c function-pointers typedef

为了对函数指针执行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库示例的代码片段。有人可以向我解释一下吗?

2 个答案:

答案 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类型函数的指针