2010-05-18 144 views
1

请参阅我有两个函数,一个用于获取字符,另一个用于放置像这样的字符。带有默认参数的函数指针C

void function_get_char (input); 
void function_put_char (output); 

我有一个这样的函数的函数指针。

void (*function_operators[])(input_or_output) = {function_get_char, function_put_char}; 

我需要的,我会打电话给我的function_operator,我想也不需要指定,如果我想要得到它的输出或输入我的。

我是否需要构建像这样的函数指针?

void (*function_operators[])(input_or_output) = {function_get_char(input), function_put_char(output)}; 

我该怎么办? 在此先感谢。

备注

输入或输出参数,不是run_time参数。

+0

你'function_get_char'不能得到任何东西,因为它返回'void'并采取了一个'int'因为你没有列出类型,所以如果有什么类型默认为int。之后,我不确定你在问什么。 – nategoose 2010-05-18 22:17:10

回答

0

您将不得不创建一个没有参数的函数,该函数使用参数封装对该函数的调用。如果您需要在运行时执行此操作,请查看thunk或蹦床(的其中一个定义)。

3

我不是很确定你想要做什么,但是如果你想修复inputoutput到某个预定义的值(因为你说他们不是运行时参数),最简单的解决方案应该是编写一些包装函数用正确的参数调用“真实”功能。例如:

void fixed_get_char(void) { function_get_char(input); } 
void fixed_put_char(void) { function_put_char(output); } 

void (*function_operators[])(void) = {fixed_get_char, fixed_put_char}; 
+1

看起来@drigo尝试在C中进行卷曲(http://en.wikipedia.org/wiki/Currying)。 – 2010-05-18 21:37:01