2010-05-18 145 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