void ( *signal( int sig, void (__cdecl *func) ( int sig [, int subcode ] )) ) ( int sig );

この宣言の読みかたが分かりません。
”signalは第一引数にint sigをとって、...
ここから先を教えてください。お願いします。