Не могу понять синтаксис объявления функций

Иногда в исходиниках на си натыкаюсь на такое объявление функций

any_type *(*function_name)(arg1 int, arg2 int);

Или конкретный пример отсюда https://github.com/php/php-src/blob/master/ext/opcache/ZendAccelerator.c#L124

zend_string *(*accelerator_orig_zend_resolve_path)(zend_string *filename);

Непонятно здесь то, почему перед именем функции стоит указатель и почему оно взято в скобки: (*function_name)


Ответы (1 шт):

Автор решения: Harry

"Стоит указатель", чтобы показать, что это — указатель на функцию, а взято в скобки потому, что без них это рассматривалось бы как функция, возвращающая указатель. Например,

int * f();    // Функция, возвращающая указатель на int
int (* f)();  // Указатель на функцию, возвращающую int
→ Ссылка