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

时间:2013-11-19 13:15:13

标签: c function callback

请不要在意或严格修改语法。更重要的一点是为什么回调函数的名称回调?

例如: -

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”被称为回调但为什么?对函数的任何调用都必须引用函数并且应该执行它,但为什么名称不同?

2 个答案:

答案 0 :(得分:3)

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

这不会调用drive()。这是对breaker的调用,函数drive的地址作为参数。括号的绝对表示我们没有调用驱动器,我们将函数的地址作为参数传递。

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

修改

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

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

答案 1 :(得分:0)

breaker(23,45,drive); 

这将用call

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