ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
752597 Топик полностью
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); // собственно вызов Но вдруг есть более православный способ? С другой стороны, вряд ли будет это читаемо.