linux回调函数
2015-08-04 18:49
441 查看
转自 : http://blog.chinaunix.net/uid-24372973-id-293644.html
一,什么是回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
二,为什么使用回调函数
回调可用于通知机制,例如在我们的项目中,播放器在后台运行,前台通过控制条上暂停,播放,拖拽等行为对播放器进行操作。但是当你进行这些动作的时候,后台的播放器在相当于一个暗盒里运行,你并不知道操作成功了,还是由于某个原因失败了。这个时候你就要使用回调函数,来通知前台的操作是否成功。觉个更简单的例子,你女朋友要出远门,你给你女朋友一个电话,让她每过了一个地方给你回个电话,在这个过程中,你女朋友通过电话告诉你她位置的变化这个过程就是回调函数。
3。简单的回调函数的实现
一,什么是回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
二,为什么使用回调函数
回调可用于通知机制,例如在我们的项目中,播放器在后台运行,前台通过控制条上暂停,播放,拖拽等行为对播放器进行操作。但是当你进行这些动作的时候,后台的播放器在相当于一个暗盒里运行,你并不知道操作成功了,还是由于某个原因失败了。这个时候你就要使用回调函数,来通知前台的操作是否成功。觉个更简单的例子,你女朋友要出远门,你给你女朋友一个电话,让她每过了一个地方给你回个电话,在这个过程中,你女朋友通过电话告诉你她位置的变化这个过程就是回调函数。
3。简单的回调函数的实现
#include <stdio.h> typedef void (*rand_num)(void* ,int); void GetCallBack(void* lpVoid,rand_num callback) { int a = 1; callback(lpVoid,a); //step 3 在这里给Int参数传值 } class B { public: B(){} void myprintf(int a); void test(void); static void fCallBack(void* lpVoid,int a);//把回调函数设为类的静态成员函数。 }; void B::fCallBack(void *lpVoid, int a) { B* p = (B*)lpVoid; //该回调函数的其中一个参数是该类的对象指针 p->myprintf(a); } void B::myprintf(int a) { switch(a) { case 0 : printf("nnnnnn....\n"); break; case 1: printf("i get it ....value is %d\n",a); break; default: break; } } void B::test() { GetCallBack(this,fCallBack);//step 2 } int main(void) { B b; b.test(); //step 1 } |
相关文章推荐
- 在Linux下安装和使用MySQL
- 使用 jsch 连接linux
- 微信公众号开发之被逼学web服务端1-----使用SecureCRT连接Linux服务器
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
- 设计模式之工厂模式
- ceph存储 Linux-Futex浅析
- Linux 命令tail手动实现
- Linux ACL权限设置
- mac/linux常用命令
- Linux服务器编程(1)
- CentOS设置程序开机自启动的方法
- linux下创建用户 费元星站长
- CentOS /usr/libexec/gconf-sanity-check-2 exited with status 256问题解决
- 使用SecureCRT时设置vim显示颜色
- Linux下显示IP地理位置信息的小工具-nali
- centos查看系统登录记录
- Linux下正规表示法的简单理解
- linux下文件的复制、移动与删除
- LINUX——监控服务器状态
- ARM2440学习笔记--Linux系统下串口调试和USB调试环境搭建