返回信息流一直对回调函数不是太明白,尤其一句话是“凡是由你设计却由windows系统呼叫的函数,被称为回调函数” 。
什么是系统调用呢?我们自己写的函数那是被谁调用啊?
把自己定义的函数地址作为另外一个函数的参数。 那么这个自己定义的函数就算是回到函数么?回调函数具体机制是什么样的呢?
void func()
{
printf("Hello");
}
int main()
{
FILE * fp = fopen("C:/123.txt");
....
func();
}
那上面函数中fopen,func算是被谁调用。
这是一条镜像帖。来源:北邮人论坛 / cpp / #25641同步于 2009/6/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教回调函数
youziboy
2009/6/30镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
想象这么个程序
在USB插入的时候执行一些特殊的操作
做法有两种:
1、写程序,循环判断当前时间是否有U盘插入
2、程序等着,让操作系统在检测到有U盘插入的时候再通知你的程序
在2里面,你得告诉操作系统,用什么方式通知程序来响应“U盘插入”这个事件,这里你需要做的就是告诉系统用你定义的一个函数来“呼叫”你的程序。这个函数就是回调函数
不仅仅是在操作系统的GUI程序设计里。在所有的其他程序设计里都可能存在有回调函数。
比如说让浏览器在网页加载完全的时候调用一个特定的javascript函数
【 在 youziboy (柚子) 的大作中提到: 】
: 一直对回调函数不是太明白,尤其一句话是“凡是由你设计却由windows系统呼叫的函数,被称为回调函数” 。
: 什么是系统调用呢?我们自己写的函数那是被谁调用啊?
: 把自己定义的函数地址作为另外一个函数的参数。 那么这个自己定义的函数就算是回到函数么?回调函数具体机制是什么样的呢?
: ...................
回调函数其实很简单,最简单的理解就是:A告诉(调用)B,并且给B一个参数C,让B去做某一件事,做完了调用C,就这么简单。这个调用C就相当于通知A,B完成了分配的任务
【 在 youziboy 的大作中提到: 】
: 一直对回调函数不是太明白,尤其一句话是“凡是由你设计却由windows系统呼叫的函数,被称为回调函数” 。
: 什么是系统调用呢?我们自己写的函数那是被谁调用啊?
: 把自己定义的函数地址作为另外一个函数的参数。 那么这个自己定义的函数就算是回到函数么?回调函数具体机制是什么样的呢?
: ...................
"凡是由你设计却由windows系统呼叫的函数,被称为回调函数"
谁说的啊。。
ls的说的很对
你可以简单地把它当做是你给别人的一个函数指针
别人会在合适的时候来调用你这个函数来完成一定的功能
【 在 youziboy (柚子) 的大作中提到: 】
: 一直对回调函数不是太明白,尤其一句话是“凡是由你设计却由windows系统呼叫的函数,被称为回调函数” 。
: 什么是系统调用呢?我们自己写的函数那是被谁调用啊?
: 把自己定义的函数地址作为另外一个函数的参数。 那么这个自己定义的函数就算是回到函数么?回调函数具体机制是什么样的呢?
: ...................
void doSomething(void *onDone()) {
printf("Doing Something...\n");
printf("Done!\n");
onDone();
return;
}
void please_call_this_when_done() {
printf("My function is called\n");
}
int main() {
doSomething(please_call_this_when_done); // please_call_this_when_done is a callback.
return 0;
}