使用参数回调

时间:2011-10-10 19:26:14

标签: c callback

我试图弄清楚如何使用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;
}

3 个答案:

答案 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;
}