Définir une fonction avant le main?

Sont les déclarations de fonction/prototypes nécessaires en C99 ?

Je suis actuellement en train de définir mes fonctions dans un fichier d'en-tête et #include "-ING " dans le fichier principal. Est-ce OK en C99 ?

Pourquoi la plupart des programmeurs déclarer/prototype de la fonction avant le main() et de définir l'après main() ? N'est-il pas plus facile de les définir avant de principal et d'éviter toutes les déclarations et les prototypes ?

Contenu de l'en-tête.h fichier:

int foo(int foo)
{
//code
return 1;
}

Contenu du fichier principal:

#include <stdio.h>

#include "header.h"

int main(void)
{
foo(1);
return 0;
}

OriginalL'auteur Neeladri Vishweswaran | 2010-11-04