对于这么的一个指针,首先我们还是从定义开始,定义一个指针 并取个名字叫pfun,(pfun),这个指针是指向一个函数的,这个函数的结构是:返回值是int类型的,,函数有两个参数也是int类型的,int (*pfun)(int, int); 由于这样的指针看上去会很复杂 所以我们一般将这种指针typedef一下:
typedef int (*int_pfun_int_int_t)(int, int);
将这种类型的指针变量重新命名为int_pfun_int_int_t, 我们定义这种类型的指针时也会显得容易一些。说一下这种被指针所指向的函数,一般都称作为回调函数(callback)。C++中有一个东西叫try,用来作为异常处理的。对于我而言,这种callback也可以作为某种突发事件的处理。。
举例 :error_e UserTimerCreate(name_e name, time_t overTime, vid_pfun_void_t pfun);
对于上面的函数解释一下:用来创建一个用户使用的定时器,返回值是一个错误状态码(enum),函数名UserTimerCreate, 第一个参数name 是用户定时器的名称(标识)(enum), 第二个参数overTime 这个定时器的定时时间, 第三个参数 pfun 第三个参数就是定时器时间到达(超时)的处理函数。这样使用的好处是什么嘞,就是说,用户其实可能会创建多个定时器,每个定时器创建的超时时间,以及每个定时器中断触发之后的想要干的事儿都不一样。如果不利用回调,就需要为每个定时器配上一个独立的API去提供给上层调用。我现在配置成统一的接口后,你用参数的方式传给我,接下来上层的代码你就不用操心我怎么给你调用,我下层的代码也不用担心调用的是哪个了。