Не могу понять синтаксис объявления функций
Иногда в исходиниках на си натыкаюсь на такое объявление функций
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