我试图弄清楚如何使用C中的参数回调。以下不起作用。什么是最好的方法来实现它? (传递回调函数的参数)
#include <stdio.h>
void caller(int (*cc)(int a)) {
cc(a);
}
int blub(int a) {
printf("%i", a);
return 1;
}
int main(int argc, char** argv)
{
caller(blub(5));
return 1;
}
答案 0 :(得分:8)
您在传递函数之前正在进行调用,而不是传递回调函数本身。试试这个:
#include <stdio.h>
void caller(int (*cc)(int ),int a) {
cc(a);
}
int blub(int a) {
printf("%i", a);
return 1;
}
int main(int argc, char** argv)
{
caller(blub, 1000);
return 1;
}
答案 1 :(得分:1)
caller
需要一个函数指针,你给它一个整数。您只需要caller(blub)
。
此外int (*cc)(int a)
语法无效。
void caller(int (*cc)(int), int a) {
cc(a);
}
int main(int argc, char** argv)
{
caller(blub, 5);
return 1;
}
可能是最接近你的代码的东西。
答案 2 :(得分:0)
你不能把参数变成函数指针。试试这个:
#include <stdio.h>
void caller(int (*cc)(int a), int a) {
cc(a);
}
int blub(int a) {
printf("%i", a);
return 1;
}
int main(int argc, char** argv) {
caller(&blub, 5);
return 1;
}