it-swarm.com.de

Warum müssen wir in C++ `int main` und nicht` void main` verwenden?

Warum müssen wir in C++ int main und nicht void main verwenden?

27
kasperasky

Die kurze Antwort lautet, weil der C++ - Standard main() benötigt, um int zurückzugeben.

Wie Sie wahrscheinlich wissen, wird der Rückgabewert der Funktion main() von der Laufzeitbibliothek als Exitcode für den Prozess verwendet. Sowohl Unix als auch Win32 unterstützen das Konzept einer (kleinen) Ganzzahl, die von einem Prozess zurückgegeben wird, nachdem er abgeschlossen wurde. Die Rückgabe eines Werts aus main() bietet dem Programmierer eine Möglichkeit, diesen Wert anzugeben.

28
Greg Hewgill

Die meisten Betriebssysteme berichten dem Benutzer oder dem aufrufenden Prozess, ob eine Anwendung erfolgreich war oder nicht. Dies ist besonders hilfreich bei Skripts, bei denen das Skript die Ergebnisse eines Programms bedingt verzweigen kann (wenn-dann). Etwas in der Art von:

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

Dieser Ergebnisstatus erfolgt über den Rückgabewert von main.

Während einige Compiler Void-Main zulassen, erfordert der ANSI-Standard aus Gründen der Konsistenz und Einfachheit einen einzigen Prototyp von Main: 

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

Da in C Argumente vom Aufrufer bereinigt werden, kann der Autor von main die Argumente argc & argv nicht deklarieren oder verarbeiten. Wenn jedoch die Setup-Routinen, die main aufrufen, einen int-Rückgabewert erwarten und keinen finden, kann das Verhalten undefiniert sein.

Kurze Antwort:

  • Der Rückgabewert von main ist nützlich für das Scripting.
  • Die Setup- und Bereinigungsroutinen, die main aufrufen, benötigen eine konsistente Schnittstelle.
15
abelenky

Hauptgrund für den Wechsel 

void main () {}

zu 

int main () {}

in späteren Releases wurde Fehler gemeldet im Programm während der Ausführung an Betriebssystem aufgetreten, auf dem es läuft 

return 0;

identifizieren Sie das Programm erfolgreich, wenn eine Zahl statt 0 zurückgegeben wird. Dies bedeutet, dass ein Fehler aufgetreten ist, dessen Fehlercode der von main zurückgegebene ist, wenn Sie mit codeblock IDE siehe im Build-Protokoll, wenn main normalerweise 0 zurückgibt 

Process terminated with status 0

andernfalls wird der Statuscode rot angezeigt, was bedeutet, dass ein Fehler aufgetreten ist

5
Code Warrior

Von Wikipedia:

Der von der Hauptfunktion zurückgegebene Wert wird zum Exit-Status des Prozesses. Der C-Standard schreibt jedoch nur zwei Werte vor: EXIT_SUCCESS (traditionell Null) und EXIT_FAILURE. Die Bedeutung anderer möglicher Rückgabewerte ist implementierungsdefiniert.

1
BBetances

Wie in C, weil der Prozess dem Betriebssystem einen Beendigungscode gibt.

Sie können entweder verwenden

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

oder

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

Dies ist zumindest in C89 IIRC.

0
Keltia

Da int der Rückkehrcode ist, kann ein Programm zum Betriebssystem zurückkehren.

Sie können diesen Wert abfragen, um zu prüfen, ob die Operation erfolgreich war.

Dies war äußerst hilfreich bei der Verwendung von Kommandozeilen-Skripts.

0
Toon Krijthe

Vielleicht, weil es sinnvoll ist, den Statuscode der main()-Methode sauber zu verlassen. In Java müssen wir dies mit System.exit() nachahmen, was nicht alles so anmutig ist.

0
Rahul

Wenn wir unser Programm zur Überprüfung ausführen, wird es erfolgreich ausgeführt oder nicht. Wenn also 0 zurückgegeben wird, bedeutet dies, dass es wahr ist und erfolgreich ausgeführt wurde. Wenn es 1 zurückgibt, wird es nicht erfolgreich ausgeführt. Dieser int-Wert teilt dem Betriebssystem mit, ob das Programm erfolgreich ausgeführt wurde

0
user2786956