2015-06-04 48 views
2

假设在C I有以下代码:如何将参数传递给回调函数以创建新函数?

int foo0(int a) { int b = 0; return a + b; } 
int foo1(int a) { int b = 1; return a + b; } 

... 
registerCallback(foo0); 
registerCallback(foo1); 

我需要两个功能foo0foo1使代码工作,尽管他们有着相同的结构。我只想写一个函数int foo(int a, int b) { return a + b;}并传递参数来“建立”新功能,如foo0foo1。那可能吗?

+0

http://www.opensourceforu.com/2012/02/function-pointers-and-callbacks-in-c-an-odyssey/ – NewCoder

+0

的'registerCallback'和主叫代码需要一个特定签名的函数,在你的情况下,类型'int(* callbackType)(int,int)'(我希望)。除非更改回调函数代码,否则无法将它传递给不同类型的函数。 –

+0

@EugeneSh。阿哈,是的,这是真的,我需要改变我的例子,使我的观点更清晰。 – dorafmon

回答

1

用途:

int bar2(int a, int b) { return bar(a); } 

... 
registerCallback(bar2) 
相关问题