Указатель на функцию с параметром по умолчанию в C - PullRequest
1 голос
/ 19 мая 2010

Видите, у меня есть две функции, одна для получения символа, а другая для установки символа следующим образом.

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.

Ответы [ 2 ]

3 голосов
/ 19 мая 2010

Я не совсем уверен, что вы хотите сделать, но если вы хотите исправить input и output на какое-то предопределенное значение (так как вы говорите, что они не являются параметрами времени выполнения), самое простое решение должно быть написать некоторые функции-оболочки, которые вызывают «настоящие» функции с правильными параметрами. Например:

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};
0 голосов
/ 19 мая 2010

Вам нужно будет создать функцию без аргументов, которая обернет вызов функции аргументом. Если вам нужно сделать это во время выполнения, посмотрите на (одно из определений) thunk или trampolines.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...