Warum brauchen wir `int main` und nicht` Leere main` in C ++ verwenden? [Duplikat]
-
19-08-2019 - |
Frage
Diese Frage bereits eine Antwort hier:
- Was sollte main () Rückkehr in C und C ++? 17 Antworten
Warum brauchen wir int main
zu verwenden und void main
nicht in C ++?
Lösung
Die kurze Antwort ist, weil der C ++ Standard main()
int
zurückzukehren erfordert.
Wie Sie wahrscheinlich wissen, ist der Rückgabewert aus der main()
Funktion wird durch die Laufzeitbibliothek als Exit-Code für das Verfahren verwendet. Unix und Win32 unterstützen das Konzept einer (kleinen) integer von einem Prozess zurückgeführt, nachdem es beendet wurde. einen Wert von main()
der Rückkehr bietet eine Möglichkeit für den Programmierer diesen Wert angeben.
Andere Tipps
Die meisten Betriebssysteme Bericht zurück an den Benutzer oder den anrufenden Prozess, wenn ein Antrag erfolgreich war oder nicht. Dies ist besonders nützlich in scripting, in dem das Skript bedingt (if-then) über die Ergebnisse eines Programms verzweigen. Etwas entlang der Linien von:
// pseudo-code
screenscrape http://mydatasource.com > results.txt
if errorlevel == 0 then
processfile results.txt
else
echo Screen Scraping Failed!
end if
Dieses Ergebnis Status wird über den Rückgabewert von Haupt getan.
Während einige Compiler für void main, aus Gründen der Konsistenz und Einfachheit ermöglichen, der ANSI-Standard erfordert einen einzigen Prototyp Haupt:
int main(int argc, char *argv[]);
Da in C, Argumente werden vom Anrufer, der Autor des Haupt kann Vernachlässigung zu erklären oder zu verarbeiten, um die Argumente argc und argv gereinigt. wenn die Setup-Routinen jedoch, die einen int Rückgabewert Haupt erwarten nennen, und stattdessen nicht ein finden, kann das Verhalten nicht definiert.
Kurze Antwort:
- Der Rückgabewert der Haupt ist hilfreich für Skripting.
- Die Vorbereitungs- und Aufräumroutinen, die Haupt Notwendigkeit eine konsistente Schnittstelle aufrufen können.
Der Hauptgrund für die Änderung
void main () {}
int main () {}
in späteren Versionen war auf benachrichtigen Fehler trat bei Programm während der Ausführung auf Betriebssystem , auf dem es läuft
return 0;
identifiziert Programm erfolgreich ausgeführt, wenn eine Anzahl eher dann 0 zurückgegeben, dass bedeutet, dass einige Fehler aufgetreten ist, die ist Fehlercode , die durch Haupt zurückgegeben. wenn Sie mit auf Codeblock IDE sieht in Buildprotokoll, wenn Hauptrückholfeder 0 es normalerweise angezeigt
Process terminated with status 0
es sonst Statuscode in rot angezeigt werden, was bedeutet, ein Fehler aufgetreten
Aus Wikipedia:
Der Wert von der Hauptfunktion zurückgegeben wird, den Exit-Status des Prozesses, wenn die C-Norm nur bestimmte Bedeutung zu zwei Werten zuschreibt:
EXIT_SUCCESS
(traditionell Null) undEXIT_FAILURE
. Die Bedeutung der anderen möglichen Rückgabewerte ist die Implementierung definiert.
Wie in C, da der Prozess dem Betriebssystem einen Exit-Code geben.
Sie können entweder
int main (int argc, char ** argv)
{
return (0);
}
oder
int main (int argc, char ** argv)
{
exit (0);
}
Dies ist zumindest in C89 IIRC.
Da int die Rückkehr ist ein Programm, kann das Betriebssystem zurück.
Sie können diesen Wert abfragen, um zu überprüfen, ob Betrieb succesfull wird.
Das war sehr hilfreich, wenn Commandline-Skripte verwenden.
Wenn wir unser Programm ausführen zu überprüfen, es läuft erfolgreich oder nicht. Also, wenn es 0 zurück, das heißt, es ist wahr und lief erfolgreich, wenn er zurück 1 dann ist es nicht erfolgreich ausgeführt und dieser int
Wert teilt das O, wenn das Programm erfolgreich ausgeführt wird oder nicht
Vielleicht, weil es Sinn macht, mit einem Statuscode von der main()
Methode sauber zu verlassen. In Java müssen wir dies mit System.exit()
emulieren, die die anmutigen nicht alles.