Вы немного не разобрались в понятиях вызов функции, объявление функции и прототип функции.
Во-первых, int main - это объявление функции, а не вызов. Во-вторых, функция может быть объявлена без описания прототипа до объявления функции. А вот перед вызовом функции она должна быть либо объявлена, либо описан прототип.
А в книге советуют писать прототипы всех функций до объявления main, чтобы было удобно читать код. Никто вам не мешает объявить любую другую функцию до main без описания ее прототипа