C標準ライブラリが提供する関数のうち、最も複雑なプロトタイプ宣言について。ちゃんと解読できますか?
signal.h
void (*signal(int sig, void (*func)(int)))(int);
cdecl.org
複雑な型宣言で困った時は https://cdecl.org/ に頼ってみましょう... で済ませたかったのですが、少しだけ加工してあげないとダメなようです。
void (*signal(int, void (*)(int)))(int);
declare signal as function (int, pointer to function (int) returning void) returning pointer to function (int) returning void
はい。日本語で書き下すと:
引数に『
int
型と「引数にint
型をとりvoid
型を返す関数へのポインタ型」』をとり「引数にint
型をとりvoid
型を返す関数へのポインタ型」を返す関数signal
の宣言
ちゃんとした解説は下記ページを参考にください: