Объявления функций выглядят так:
int AddFunc(int,int);
void FunctionFunc();
Определение типа, определяющее тип функции, выглядит одинаково, только с typedef
впереди:
typedef int AddFunc_t(int,int);
typedef void FunctionFunc_t();
Чтобы определить указатель на такой тип функции, необходимо указать дополнительный *
с дополнительными скобками, чтобы указать, к чему принадлежит *
:
typedef int (*pAddFunc_t)(int,int);
typedef void (*pFunctionFunc_t)();
(*
всегда перед именем типа / переменной, которое определено как указатель.)
Чтобы прочитать такой указатель на функцию, действуйте в противоположном направлении: пропустите (* ... )
вокруг имени типа и typedef
впереди. Результат выглядит как обычное объявление функции соответствующего типа.