【发布时间】:2017-04-16 17:24:26
【问题描述】:
可以通过函数指针在 C 中进行回调。
例子:
typedef void (*pointforfunc1)(int a);
void func1(int a);
void func2(int a, pointforfunc1 f);
void main(){
int nb = 5;
pointforfunc1 fp = func1;
func2(2, fp(nb));
return 0;
}
/*
...
Functions' definitions
...
*/
问题在于回调只能是一种确切类型的函数:一个以 int 作为参数的 void。
如何实现 javascript 风格的通用回调?回调可以是我们想要的任何函数。
【问题讨论】:
-
在表达式
func2(2, fp(nb))中,您正在调用fp。 -
不能调用任何泛型函数,但如果你知道参数的类型,你可以使用libffi
标签: c function callback function-pointers generic-programming