回调函数示例

回调函数对于应用开发者涉及不多,但是对于系统级开发者应当是必须了解的,关于回调函数可以简单的认为是自己在程序里写了一个函数但是这个函数需要通过指针方式传递给库进行调用,下面是回调函数的简单示例:

#include <stdio.h>

struct stu{

char name[10];
};
struct stu  stu1;


typedef void (*pFun)(void *pstr,int a);		//函数指针
int ret=0;

pFun pf;

void dofun()
{
sprintf(stu1.name,"%s","nihao");
pf(&stu1,223);


}
void cb(pFun fun)		//回调函数  调用fun1
{
    pf= fun;
    dofun();
}

void fun1(void *pn,int n)		//应用传递函数
{
struct stu *pstu=(struct stu *)pn;
ret = n;

printf("ret = %d name = %s\n",ret,pstu->name);
}

int main()
{

cb(fun1);


return 0;
}

执行结果:
root@ubuntu:/home/xhao/code/lib# ./test
ret = 223 name = nihao
root@ubuntu:/home/xhao/code/lib#

回调函数需要特定场合才会使用,较为好的使用场景可以参考linux 中断号和中断服务函数绑定的回调函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值