Dingo (27.04.2017 15:27 - 15:31, просмотров: 311) ответил Звероящер на Дык эта... Массив указателей на функции, ходишь по массиву, вызываешь функции всякия... :)
Спрошу здесь, потому как связанно, хоть топик может и не совсем тот. Как попросить компилятор исполнить функцию по указателю? Указателями на функции не пользовался, но вроде так: int (*p_func)(char arg);
где p_func - идентификатор,
(*p_func) - это указатель,
(*p_func)() - на функцию,
(*p_func)(char arg) - принимающую char и
int (*p_func)(char arg) - возвращающую int
Так, дальше.
Объявлена структура с полем связи, которое может быть указателем на функцию char func(char) или char* func(char).
struct my_str {
// ...
void * link;
// ...
};
И есть указатель на неё. Обратиться к полю link через указатель на структуру: p_my_str->link .
Пока всё понятно для меня.
Собственно вопрос: как попросить компилятор исполнить функцию с соответствующими аргументами и использовать возвращённое значение? Что-то вроде ch_val = some_text( ch_val2); и соответственно str = some_text( p_char); Вот что должно быть вместо some_text ? Что-то не соображу.
На крайний случай сделаю так:
char (*p_func_ch)(char arg);
p_func_ch = p_my_str->link; //присвоить один указатель другому; надеюсь не будет несоответствия типов благодаря void
char_val = *p_func_ch( char_arg); // собственно вызов
Но вдруг есть более православный способ? С другой стороны, вряд ли будет это читаемо.