Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74732
  • 博文数量: 27
  • 博客积分: 95
  • 博客等级: 民兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-04 01:38
文章分类
文章存档

2013年(1)

2012年(7)

2011年(19)

我的朋友

分类:

2012-02-21 22:33:46

原文地址:回调函数 作者:d741963250

关于回调函数。
一般来说,回调是与注册是一对的。你先把函数地址注册给我,我到需要的时候就会回调这个函数。

其实只要记住一条,函数其实也有地址,回调函数注册函数都是用的函数的地址。。函数名就是个函数的地址而已。。

比如说A.h中有如下代码:
typedef int (*function)(int,int);/*重定义一个类型,该类型为这样的一个函数指针*/

struct callback_function
{
function callback;/*定义一个函数指针*/
/*当然,也可以直接 int (*callback)(int,int);和上面的是一样的效果*/
};

然后在B.c中有如下代码:
int max(int a,int b)
{
return ((a>b)?a:b);
}

pstdata = (struct callback_function*)malloc(sizeof(struct callback_function));
memset(pstdata,0,sizeof(struct callback_function));
pstdata.callback = max ;

然后将pstdata的值传给A.c,在A.c中就可以直接用pstdata->callback(a,b)了。

这样做的好处是可以实现我不知道你函数叫什么名字,但是我知道我在具体环境该掉这个函数就可以了。。回调函数实现了通用性。
阅读(1290) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~