Что (*PREDir->cfun) (d, &tf);
ответственность за в ниже фрагмент кода:Понимание Указатели на функции в C
typedef struct {
FILE *fp;
char queue[ NAMELEN ];
char fullpath[ NAMELEN ];
char fname[ NAMELEN ];
} TRW;
typedef struct {
char *dir_to_scan;
void (*cfun)();
} SCANNING;
static TRW tf;
static SCANNING *PREDir;
char *d;
(*PREDir->cfun) (d, &tf);
Кажется, что cfun никогда не устанавливается в какой-либо реальной функции ... у вас есть код, который устанавливает его где угодно? Предоставляет ли компилятор какие-либо предупреждения об этом коде? Или вы спрашиваете, что должно произойти под тем, что, вероятно, является неопределенным поведением? – atk
Это просто вызов функции, которая зарегистрирована с помощью указателя функции 'cfun'. –
Это не совсем дубликат (этот вопрос не спрашивает о 'typedef'), но есть некоторая полезная (и некоторая эзотерическая) информация в [How' typedef' работает для указателей на функции] (http: // stackoverflow. ком/вопросы/9357520/как-TYPEDEF-работа-для-функциональных указателей/9357637 # 9357637). –