回调函数(常称callback)写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,Linux操作系统,或者其他的程序等等之类的。但是什么时候被调用却不知道了。回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数。所以很多人打比方,说回调函数还真有点像您随身带的bp机:告诉别人号码,在它有事情时call您!
一般的函数不是callback。我们自己设计的函数往往是用来实现特定功能的函数,为了实现一些功能,我们可能要在函数中调用操作系统提供的服务,例如fun1(),我们的自己设计的函数是用来由我们的主程序调用的。这就是一般意义上的函数,如下所示:
void fun1();
main()
{
.......;
fun1();
.......;
}
void fun1()
{
.....
.....
}
你可以看到,在主程序中一定会有对我写的函数的调用; 而callback函数与此不同,它不是由我们的主程序来调用的,它是为操作系统准备的,也就是说,我们的主程序中绝对看不到对callback函数的调用。回调的意思就是反过来调用,因为我们习惯了从我们的程序中调用操作系统的服务,却对操作系统调用我们的函数不习惯,所以我们写的为操作系统或其他程序调用的函数叫“回调”函数。