繁体   English   中英

为什么回调函数的名称回调?

[英]why is the name callback for the callback function?

请忽略或严格纠正语法。 更重要的一点是为什么回调函数的名称回调?

例如:-

function drive(int x, int y);
function breaker(int x, int y, callbackFunction);
int function main(){
    drive(23,24); // why is this called a "call to a function"?
    breaker(23,45,drive); // why "drive" here is called a callback and why not "call to function" like other function.
}

function drive(int x, int y){
   printf("%d%d",x,y);
}

function breaker(int x, int y, callbackFunction){
  callbackFunction(x,y);
}

这里的重点不是语法的准确性。 关键是我在main方法中调用“驱动器”,即所谓的“调用函数”,当我将“ drive”函数作为“ breaker”中其他函数的参数传递时,“ drive”被称为回调但为什么? 任何对函数的调用都必须引用函数并应执行该函数,但是为什么名称有所不同?

breaker(23,45,drive); // why "drive" here is called a callback and why not "call to function" like other function.

这不会调用drive() 这是使用功能drive的地址作为参数的breaker的调用。 括号的不存在表示我们不调用drive,而是将函数的地址作为参数传递。

这样做的目的是使breaker()可以根据需要多次调用drive()

编辑:

名称回调是因为您正在调用的函数正在回调您的函数。 当带有回调参数的函数由其他人提供时,这一点更加明显。

qsort函数为例。 qsort是一个标准的C函数,它带有一个比较器回调函数和一个要排序的数组。 只要需要比较数组中的两个元素,就可以调用qsort()qsort()调用比较器。 因此,标准的C函数会回调您的代码。

breaker(23,45,drive); 

这将用驱动器替换callbackFunction

function breaker(int x, int y, drive){
   drive(x,y);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM