Fonction main et exécution du programme

Chaque programme C possède une fonction principale qui doit être nommée main. La fonction main sert de point de départ pour l’exécution du programme. Elle contrôle généralement l'exécution du programme en dirigeant les appels à d'autres fonctions du programme.

Plusieurs restrictions s’appliquent à la fonction main, qui ne s’appliquent à aucune autre fonction C. La fonction main :

  • Ne peut pas être déclaré en tant que inline.
  • Ne peut pas être déclaré en tant que static.
  • Son adresse ne peut pas être prise.
  • Ne peut pas être appelée à partir de votre programme.

Signature de la fonction main

La fonction main n’a pas de déclaration, car elle est intégrée au langage. Si elle en avait, la syntaxe de déclaration pour main ressemblerait à ceci :

int main( void );
int main( int argc, char *argv[ ] );
int main( int argc, char *argv[ ], char *envp[ ] );

La fonction main est déclarée implicitement à l’aide de l’une de ces signatures. Vous pouvez utiliser l’une de ces signatures lorsque vous définissez votre fonction main. Le compilateur Microsoft autorise également main à avoir un type de retour void quand aucune valeur n’est retournée. Les paramètres argv et envp pour wmain peuvent également être définis en tant que type char**. Pour plus d’informations sur les arguments, consultez Description des arguments.

Notes

Les fonctions du programme source effectuent une ou plusieurs tâches spécifiques. La fonction main peut appeler ces fonctions afin qu’elles effectuent leurs tâches respectives. Lorsque la fonction main appelle une autre fonction, elle passe le contrôle d’exécution à celle-ci afin que l’exécution commence à sa première instruction. Une fonction retourne le contrôle à main quand une instruction return est exécutée ou que la fin de la fonction est atteinte.

Vous pouvez déclarer toute fonction, notamment main, pour avoir des paramètres. Le terme « paramètre » ou « paramètre formel » désigne l'identificateur qui reçoit une valeur passée à une fonction. Pour plus d’informations sur la transmission d’arguments aux paramètres, consultez Paramètres. Lorsqu'une fonction en appelle une autre, la fonction appelée reçoit de la fonction appelante des valeurs pour ses paramètres. Ces valeurs sont appelées arguments. Vous pouvez déclarer des paramètres formels pour la fonction main de façon à ce qu’elle puisse recevoir des arguments de la ligne de commande. Pour cela, utilisez le format indiqué dans la signature de fonction.

Pour passer des informations à la fonction main, les paramètres sont traditionnellement nommés argc et argv bien que le compilateur C n’ait pas besoin de ces noms. Traditionnellement, si un troisième paramètre est passé à main, ce paramètre est nommé envp. Les types de argc, argv et envp sont définis par le langage C. Vous pouvez également déclarer argv en tant que char** argv, et envp en tant que char** envp. Les exemples figurant dans la suite de cette section expliquent comment utiliser ces trois paramètres pour accéder aux arguments de la ligne de commande. Les sections ci-dessous expliquent ces paramètres.

Si votre code respecte le modèle de programmation Unicode, vous pouvez utiliser la version de main à caractères larges spécifique à Microsoft, wmain, en tant que point d’entrée de votre programme. Pour plus d’informations sur cette version de main à caractères larges, consultez Utilisation de wmain.

Arrêt de main

Un programme cesse généralement de s’exécuter lorsqu’il retourne à partir de ou atteint la fin de main, même s’il peut s’arrêter à d’autres points du programme pour diverses raisons. Par exemple, vous pouvez forcer l’arrêt de votre programme quand une condition d’erreur est détectée. Pour ce faire, vous pouvez utiliser la fonction exit. Pour plus d’informations sur exit et un exemple d’utilisation, consultez exit.

Voir aussi

Fonction main et arguments de ligne de commande (C++)
Analyse des arguments de ligne de commande C