回调函数

1271阅读 0评论2012-02-21 桔色花朵
分类:

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

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

比如说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)了。

这样做的好处是可以实现我不知道你函数叫什么名字,但是我知道我在具体环境该掉这个函数就可以了。。回调函数实现了通用性。
上一篇:安卓平台应用开发入门
下一篇:IT草根的江湖之路: 挑战,刚刚开始