Laquelle de ces deux notations est correcte: int main() ou void main()?
FAQ MP dit :
La fonction main demande à retourner une valeur (pour savoir si le programme se termine bien ou si des erreurs sont apparues). Cette valeur sera de type int. C'est pourquoi la première notation est correcte. Cependant il existe 2 notations possibles:
int main(){ ... }
ou encore
int main(int argc, char*argv[){ ... }
Les deux notations sont valables (elles demandent toutes deux à retourner une valeur) et la deuxième permet encore de travailler avec des arguments. En effet, prenons l'exemple de gcc, pour compiler un fichier vous devez faire:
gcc -o Output FichierACompiler
vous pouvez donc constater qu'ici gcc prend 3 arguments. Pour accéder à ceux-ci, la fonction main du programme gcc, intercepte les messages grace à (int argc, char *argv[]). Où argc est le nombres d'arguments passés au programme et argv est la liste d'arguments. Ce n'est pas trop compliqué je pense.
La notation void main() quant à elle est incorrecte car le type void indique que la fonction main ne doit pas retourner de valeur (interdit). Cependant certains compilateurs acceptent encore cette notation... :)
FAQ MP dit :
Le "return 0;" est-il obligé dans la fonction main( ) ?
Vous n'êtes pas obligé de le faire, la plupart des compilateurs le font pour vous, car après avoir exécuté les choses de main, le compilateur va ordonner de retourner 0 si main se termine sans erreurs.
Mais, admettons que dans main apparaisse une erreur et que vous l'avez prévue (donc que vous vérifiez et que, par exemple, vous retournez 1 si l'erreur apparaît), le compilateur va vous demander de placer le "return 0;" en fin de bloc main car il n'est pas capable de dire si la fonction main va bien se terminer ou pas. Alors il ne sait pas obliger de retourner 0.
Merci de laisser ce post sans commentaire, il appartient à la FAQ CC++. Si vous avez encore des questions postez un nouveau Topic.
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........