Bon suite à quelques remarques sur mes tutoriels, j'ai décidé d'ouvrir ce thread afin qu'on puisse discuter un peu de la fonction main et du coup des fonctions en C en général.

On est bien d'accord que le prototype de main() est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
> int main(void)
> ou :
> int main(int argc, char * argv[])
Mais comme dans un programme on a rarement besoin d'appeler cette fonction nous-mêmes, il n'est pas nécessaire de la déclarer. Si on devait la déclarer, on écrirait ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
> int main(void);
> ou :
> int main(int argc, char * argv[]);
Selon la forme utilisée.

Si main() n'est pas appelée dans le programme, on peut se contenter de la définir tout simplement. En particulier, pour la première forme, on peut donc écrire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
int main(void)
{
    return 0;
}
Qui est strictement équivalent (en C90) à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
int main()
{
    return 0;
}
Cette forme est toujours acceptée en C99, et même les exemples de n1256 utilisent cette forme.

Corrigez moi si j'ai tort (point de vue norme uniquement, pas de "je préfère ceci" s'il vous plaît. Moi je préfère l'autre ! Merci).