変数/型は別に関数定義ブロックと関数定義ブロックの間でも
定義できるんだけどそれを先頭に持っていかないとコンパイラ
が怒ると言う人が居て笑える。
太古のCだと、特にプロトタイプ宣言をしなくとも複数の
関数の相互呼び出しも可能だったが、コンパイラの処理速度が
著しく遅くなる原因として嫌われ、プロトタイプ宣言をしないと
文句を言ってコンパイルを中止するような標準が作られた。
現在のコンパイラはそれに準拠しているものが殆ど。
プログラムを何百のモジュールに分けて分割コンパイルする
開発方法が一般的になった時代と重なってる。
(Cのコンパイルはヘッダファイルを多重に大量に読み込むことが
多いので概して遅い)