C標準ライブラリが提供する関数のうち、最も複雑なプロトタイプ宣言について。ちゃんと解読できますか?
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
の宣言
[ね、簡単でしょう?][bobross]
[bobross]: https://dic.pixiv.net/a/%E3%81%AD%E3%80%81%E7%B0%A1%E5%8D%98%E3%81%A7%E3%81%97%E3%82%87%3F
ちゃんとした解説は下記ページを参考にください: