【问题标题】:Callback with parameters带参数的回调
【发布时间】:2011-10-10 19:26:14
【问题描述】:

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

【问题讨论】:

  • 我会typedef int (*callback_t)(int);

标签: c callback


【解决方案1】:

您是在传递函数之前进行调用,而不是传递回调函数本身。试试这个:

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

【讨论】:

    【解决方案2】:

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

    可能是最接近你的代码的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      相关资源
      最近更新 更多