Question

    

Cette question a déjà une réponse ici:

    
            
  •              Que doit renvoyer main () en C et C ++?                                      17 réponses                          
  •     
    

Pourquoi devons-nous utiliser int main et non void main en C ++?

Était-ce utile?

La solution

La réponse courte est que la norme C ++ requiert que main () renvoie int .

Comme vous le savez probablement, la valeur renvoyée par la fonction main () est utilisée par la bibliothèque d'exécution comme code de sortie du processus. Unix et Win32 supportent tous deux le concept d'un (petit) entier renvoyé par un processus après sa fin. Renvoyer une valeur de main () offre au programmeur un moyen de spécifier cette valeur.

Autres conseils

La plupart des systèmes d'exploitation signalent à l'utilisateur, ou au processus appelant, si une application a réussi ou non. Ceci est particulièrement utile dans les scripts, où le script peut conditionnellement créer une branche (si-alors) sur les résultats d'un programme. Quelque chose dans le genre de:

// pseudo-code
screenscrape  http://mydatasource.com > results.txt
if errorlevel == 0 then
   processfile results.txt
else
   echo Screen Scraping Failed!
end if

Cet état de résultat est obtenu via la valeur de retour de main.

Alors que certains compilateurs autorisent la modification de main vide, pour des raisons de cohérence et de simplicité, la norme ANSI exige un seul prototype de main:

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

Parce qu'en C, les arguments sont nettoyés par l'appelant, l'auteur de main peut négliger de déclarer ou de traiter les arguments argc & amp; argv. Cependant, si les routines d'installation appelant main attendent une valeur de retour int et n'en trouvent pas, le comportement peut ne pas être défini.

Réponse courte:

  • La valeur de retour de main est utile pour le script.
  • Les routines d'installation et de nettoyage qui font appel à main nécessitent une interface cohérente à utiliser.

Principale raison du changement

  

void main () {}

à

  

int main () {}

dans les versions ultérieures, il fallait notifier qu'une erreur se soit produite au cours de l'exécution du programme sur le système d'exploitation sur lequel il s'exécute

.
return 0;

identifie le programme exécuté avec succès si un nombre plutôt que 0 est renvoyé, ce qui signifie qu'une erreur est survenue. Il s'agit du code d'erreur renvoyé par principal. si vous utilisez IDE codeblock , consultez le journal de construction si le retour principal 0 affiche normalement

Process terminated with status 0

sinon, il affiche le code d'état en rouge, ce qui signifie qu'une erreur s'est produite

Sur Wikipedia:

  

La valeur renvoyée par la fonction principale devient le statut de sortie du processus, bien que le standard C attribue une signification spécifique à deux valeurs: EXIT_SUCCESS (traditionnellement nul) et EXIT_FAILURE La signification des autres valeurs de retour possibles est définie par l'implémentation.

Comme en C, car le processus donnera un code de sortie au système d'exploitation.

Vous pouvez soit utiliser

int main (int argc, char ** argv)
{
  return (0);
}

ou

int main (int argc, char ** argv)
{
  exit (0);
}

C’est au moins dans C89 IIRC.

Parce que int est le code retour, un programme peut retourner au système d'exploitation.

Vous pouvez interroger cette valeur pour vérifier si l'opération a abouti.

Cela était extrêmement utile lors de l'utilisation de scripts en ligne de commande.

Lorsque nous exécutons notre programme pour vérifier qu'il fonctionne correctement ou non. Donc, quand il renvoie 0, cela signifie que c'est vrai & amp; a bien été exécuté, s'il renvoie 1, il n'est pas exécuté avec succès & amp; cette valeur int indique au système d'exploitation si le programme a été exécuté avec succès ou non

Peut-être parce qu'il est judicieux de quitter proprement avec un code d'état de la méthode main () . En Java, nous devons émuler ceci en utilisant System.exit () , ce qui n'est pas si élégant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top