回调函数带参数

8

我正在尝试弄清楚如何在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;
}

1
我会使用 typedef int (*callback_t)(int); - Sparkler
2个回答

14

您在传递函数之前调用了该函数,而不是传递回调函数本身。请尝试这样做:

#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;
}

4
< p > 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;
}

这可能是最接近你的代码可行的方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接