Cの型宣言

Cの宣言から型が何かを読み解くのって難しいですよね。
えっ、もう何を見せられても読める自信があるって?

当然

void (*signal(int, void (*)(int)))(int);

これくらいは読めるよね。

じゃあ

typedef int t;
t foo(t (t));

この foo の型は何だろう?

t hoge_1(t *t);
t hoge_2(t *(t));
t hoge_3(t (*t));

なんて全部同じに見えるし…