一个函数申明不懂解决思路

一个函数申明不懂
void (*signal(int _sig, void (*_func)(int)))(int);

这个函数。。。


我懂 void (*_func)(int) 这个是参数类型 是一个 函数指针

但是这个整体就不懂了。

就另 x = signal(int _sig, void (*_func)(int)

那个原式 = void (*x) (int);

这个申明的意思是 signal 返回的 值是 指向void (*x)(int) 函数的指针.对不对

我想可能是这样的。

------解决方案--------------------
函数指针作为函数指针的参数 明白??函数指针套函数指针
------解决方案--------------------
参数是函数指针,返回函数指针,这纯粹是为了自动机服务的,自己要理解的话用typedef简化~

void (*signal(int _sig, void (*_func)(int)))(int);
分解
typedef void (*)(int) X;
就变成
X signal(int _sig,X _func);

清楚了么?
------解决方案--------------------
typedef void (*)(int) ==> X;
typedef void (*X)(int);
X signal(int _sig,X _func);