2011-10-10 98 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; 
}