Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 带参数的回调_C_Callback - Fatal编程技术网

C 带参数的回调

C 带参数的回调,c,callback,C,Callback,我试图弄清楚如何在C中使用带参数的回调。下面的方法不起作用。最好的归档方式是什么?(传递回调函数的参数) #包括 无效呼叫方(内部(*cc)(内部a)){ cc(a); } int blub(int a){ printf(“%i”,a); 返回1; } int main(int argc,字符**argv) { 呼叫者(blub(5)),; 返回1; } 调用者需要一个函数指针,而您给它一个整数。您只需呼叫方(blub) 另外,int(*cc)(int a)是无效语法 void caller(i

我试图弄清楚如何在C中使用带参数的回调。下面的方法不起作用。最好的归档方式是什么?(传递回调函数的参数)

#包括
无效呼叫方(内部(*cc)(内部a)){
cc(a);
}
int blub(int a){
printf(“%i”,a);
返回1;
}
int main(int argc,字符**argv)
{
呼叫者(blub(5)),;
返回1;
}

调用者
需要一个函数指针,而您给它一个整数。您只需
呼叫方(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;
}

可能是与代码最接近的工作方式。

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

#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;
}
#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;
}
#包括
无效调用方(int(*cc)(int),int a){
cc(a);
}
int blub(int a){
printf(“%i”,a);
返回1;
}
int main(int argc,字符**argv)
{
来电者(blub,1000);
返回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;
}
#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;
}
#包括
无效调用方(int(*cc)(int a),int a){
cc(a);
}
int blub(int a){
printf(“%i”,a);
返回1;
}
int main(int argc,字符**argv){
呼叫者(&blub,5);
返回1;
}
I将
typedefint(*callback_t)(int)