Pourquoi devons-nous utiliser `int main` et non `void main` en C++? [dupliquer]
cette question a déjà une réponse ici:
Pourquoi devons-nous utiliser int main
et non void main
en C++?
8 réponses
La réponse courte, c'est parce que la norme C++ exige main()
retourner int
.
comme vous le savez probablement, la valeur de retour de la fonction main()
est utilisée par la bibliothèque d'exécution comme code de sortie du processus. Unix et Win32 prennent en charge le concept d'un (petit) entier retourné d'un processus après qu'il a terminé. Retourner une valeur de main()
fournit une façon pour le programmeur de spécifier cette valeur.
la plupart des systèmes d'exploitation rapportent à l'utilisateur, ou au processus d'appel, si une application a été réussie ou non. Ceci est particulièrement utile dans le script, où le script peut conditionnellement se connecter (si-alors) sur les résultats d'un programme. Quelque chose du genre:
// pseudo-code
screenscrape http://mydatasource.com > results.txt
if errorlevel == 0 then
processfile results.txt
else
echo Screen Scraping Failed!
end if
ce statut de résultat est fait via la valeur de retour de main.
alors que certains compilateurs permettent de vide main, pour le bien de la cohérence et la simplicité, le La norme ANSI exige un seul prototype de main:
int main(int argc, char *argv[]);
parce que dans 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 & argv. Cependant, si les routines de configuration qui appellent main attendent une valeur de retour int, et n'en trouvent pas, le behavior peut être indéfini.
courte réponse:
- la valeur de retour de main est utile pour l'écriture de scripts.
- les routines de configuration et de nettoyage qui invoquent main ont besoin d'une interface cohérente à utiliser.
principale raison du changement
void main () { }
à
int main () {}
dans les versions ultérieures était à erreur de notification se produit dans le programme au cours de l'exécution de système d'exploitation sur lequel il exécute
return 0;
identifier le programme exécuté avec succès si tout nombre plutôt que 0 retourné qui signifie qu'une erreur s'est produite who's code d'erreur est qui retourné par main. si vous êtes en cours d'exécution sur codeblock IDE voir dans le journal de construction si retour principal 0 Il 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
De Wikipedia:
la valeur retournée par la fonction principale devient l'état de sortie du processus, bien que la norme C n'attribue de sens spécifique qu'à deux valeurs:
EXIT_SUCCESS
(traditionnellement zéro) etEXIT_FAILURE
. La signification des autres valeurs de retour possibles est définie par la mise en œuvre.
comme en C, parce que le processus donnera au système D'exploitation un code de sortie.
vous pouvez 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 returncode qu'un programme peut retourner à L'OS.
Vous pouvez interroger cette valeur pour vérifier si l'opération a été réussie.
cela a été extrêmement utile lors de l'utilisation de scripts en ligne de commande.
Quand nous exécutons notre programme pour vérifier qu'il fonctionne correctement ou non. Donc quand il retourne 0 cela signifie que c'est true & ran avec succès, s'il retourne 1 alors il ne fonctionne pas avec succès & cette valeur int
indique au système D'exploitation si le programme a fonctionné avec succès ou non
peut-être parce qu'il est logique de sortir proprement avec un code d'état de la méthode main()
. En Java, nous devons imiter cela en utilisant System.exit()
qui n'est pas si gracieux que ça.