Я изучал обработку сигналов в Unix и наткнулся на это
void (*signal(int sig, void (*func)(int)))(int);
Я не понимаю этот прототип и то, как он возвращает указатель на функцию.
Я также прочитал этот ответ: Как работают указатели функций в C? но мне непонятно.
Предполагается, что он возвращает указатель на функцию, но я не понимаю, где он указывает тип возвращаемого значения в качестве другого указателя на функцию. указатель на функцию. Правильно ли это?
Есть ли для этого более простой пример?
Также: объяснение cdecl — person rs911 schedule 12.08.2013
@millimoose Спасибо, это действительно полезно. — person rs911 schedule 12.08.2013
Кроме того, возвращаемый тип становится указателем на функцию путем добавления списка параметров после сигнатуры функции. (который уже содержит несвязанный список параметров.) Сравните void (*foo(int))< /a> (то же самое, что void *foo(int), но не void (*foo)(int)) и void (*foo(int))(long). Другими словами: возвращаемый тип функции — это то, что находится вне сигнатуры, а не только слева от нее. — person rs911 schedule 12.08.2013
Источник: