📅  最后修改于: 2023-12-03 15:37:13.457000             🧑  作者: Mango
回调是一种常见的编程技术,允许将函数作为参数传递给另一个函数,并在需要时被调用。C++ 和 C 编程语言都支持回调函数。
回调函数是指在函数调用时通过参数传递的函数。回调函数通常是指一个函数指针,通过该指针可以调用传递的函数。
在 C++ 中,回调函数通常是一个函数对象或类成员函数,可以通过 std::function 类型传递。在 C 语言中,回调函数是一个函数指针,可以通过函数指针变量来传递。
下面是一个简单的 C++ 示例代码。
#include <iostream>
#include <functional>
void print(int x, std::function<int(int)> callback) {
std::cout << "print: " << x << ", callback: " << callback(x) << std::endl;
}
int add(int x) {
return x + 1;
}
int main() {
print(1, add);
return 0;
}
在上面的代码中,print
函数为一个回调函数,接受两个参数。第一个参数 x
是需要打印的整数,第二个参数是一个函数类型的参数 callback
。其中 std::function
是 C++11 中新的函数类型,可以接受任何可以调用的对象,包括函数指针、函数对象和 lambda 表达式。在本例中,callback
参数的类型是 std::function<int(int)>
,表示它是一个接受 int
类型参数并且返回 int
类型值的函数类型。
在 print
函数内部,调用了 callback(x)
函数,将 x
作为参数传递给该函数,并将返回值输出到终端。
在 main
函数中,调用 print
函数,并将参数 1
和 add
函数作为参数传递。add
函数在本例中作为回调函数,可以在 print
函数内部被调用并返回期望的值。
对于 C 语言,可以使用下面的代码实现相同的功能。
#include <stdio.h>
typedef int (*callback_t)(int);
void print(int x, callback_t callback) {
printf("print: %d, callback: %d\n", x, callback(x));
}
int add(int x) {
return x + 1;
}
int main() {
print(1, add);
return 0;
}
在上面的代码中,callback_t
是一个函数指针类型,接受 int
类型参数并且返回 int
类型值。在 print
函数中,callback
参数是一个函数指针变量,可以接受指针参数并返回相应的值。
在 main
函数中,调用 print
函数,并将参数 1
和 add
函数作为参数传递。add
函数在本例中作为回调函数,可以在 print
函数内部被调用并返回期望的值。
回调是一种常见的编程技术,可以在需要时动态地调用函数。C++ 和 C 编程语言都支持回调函数,可以通过函数指针或函数对象来传递。在 C++ 中,可以使用 std::function
类型传递回调函数,而在 C 语言中,则需要使用函数指针。