書き忘れ。

> 1. 変数宣言
> 2. 関数定義
> 3. typedef

この 3 つは、規格では 「宣言文」 として、全く同一に扱われてる。
だから、区別する意味は無い。