2011-10-10 69 views
2

我试图找出如何在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; 
} 

回答

6

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

#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

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

可能是最接近你的代码的工作。

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