带参数的回调

发布于 2024-12-09 05:56:48 字数 288 浏览 0 评论 0原文

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

Im trying to figure out how to use callbacks with parameters in C. The following isnt working. What is the best way to archieve it? (passing arguments for the callback function)

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

执手闯天涯 2024-12-16 05:56:48

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

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

You are doing the call before passing the function, not passing the callback function itself. Try this:

#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;
}
想你只要分分秒秒 2024-12-16 05:56:48

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

可能是最接近您可以工作的代码的东西。

caller expects a function pointer and you're giving it an integer. You need just caller(blub).

Also int (*cc)(int a) is invalid syntax.

void caller(int (*cc)(int), int a) {
    cc(a);
}

int main(int argc, char** argv)
{
    caller(blub, 5);
    return 1;
}

Is probably the closest thing to your code which could work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文