関数はどこに書いてもいいという訳ではあり ません。
-----
int main(){
func();
return 0;
}
void func(){
}
-----
このように記述した場合、エラーとなります。
なぜなら、プログラムを構築する コンパイラも上から下へと処理していくため、
main() 関数の中で func() 関数を呼んでいますが、
その段階では、 func() 関数は定義されておらず、
そんな関数無いよ! とエラーを出してくるためです。
その為、関数は利用する前に定義しなければならないのです。
-----
void func(){
}
int main(){
func();
return 0;
}
-----