2016-09-04 5 views
-7

Wie kann man den Rückgabewert der Hauptfunktion "main()" verbessern? Ich möchte nur überprüfen, ob der Rückgabewert der Hauptfunktion wirklich "0" ist, wenn sie erfolgreich ausgeführt wird.Wie cout den Rückgabewert der Hauptfunktion "main()" in C++?

Vielen Dank!

+1

Benennen Sie 'main()' in 'notmain()' um. Fügen Sie eine neue 'main()' -Funktion hinzu, die 'notmain()' aufruft und den zurückgegebenen Wert ausgibt. –

+0

Sie entscheiden den Rückgabewert, nicht den Compiler. Außerdem ist es untraditionell und unheimlich, 'main()' –

+3

'echo $?' Aus der Shell zu nennen, dient Ihnen normalerweise gut –

Antwort

-1

Willkommen bei Stack Overflow! Wenn es 0 ist, dann ist es 0. Sie sind derjenige, der den Rückgabewert von Ihre eigene Funktion angibt. Wenn Sie unsicher sind, fügen Sie bitte Code und/oder Problem hinzu, was Sie stört.

0

Meinst du, dass Sie testen möchten, dass die folgende 0 zurückgibt?

int main() { 
    int rc = doSomething(); 
    return rc; 
} 

Sie können es wie folgt tun:

int main() { 
    int rc = doSomething(); 
    std::cout << rc << "\n"; // Just print it out before returning 
    return rc; 
} 

Aber es ist besser, den Rückgabewert in der Schale zu überprüfen, von wo aus Sie Ihre Anwendung ausführen:

Unter UNIX/Linux (in Schale):

> ./my_app 
> echo $? 
0 

Unter Windows (in Eingabeaufforderung):

> my_app.exe 
> echo %ERRORLEVEL% 

Beachten Sie, dass in C++ Sie sind nicht erlaubt, den Anruf zu main() oder rufen Sie es selbst abzufangen.

3.6.1 Hauptfunktion

Die Funktion main darf nicht innerhalb eines Programms verwendet werden.

Sie sollten also nicht versuchen, den main() Aufruf umbrechen und seinen Rückgabewert drucken. Selbst wenn das funktioniert, wäre es nicht portabel (ganz zu schweigen davon, dass Sie Ihre Anwendung sogar zweimal ausführen).

+0

"Was du willst ist unmöglich" "std :: cout << the_return_value; Rückgabe the_return_value; '. – juanchopanza

+0

"In C++ können Sie den Aufruf von main() nicht abfangen oder selbst aufrufen." nein, du kannst das tun, siehe meinen Code in meiner Antwort –

+0

Nein, ich möchte nicht das Ergebnis der Funktion in einem main() ausdrucken. Jedes main() gibt am Ende eine Null zurück, wenn es erfolgreich ausgeführt wurde. Ich möchte diesen zurückgegebenen Wert "0" ausgeben. – OSUCowboy

-1

Sie können einen Unix-Befehl verwenden, um den Rückgabewert des zuvor ausgeführten Befehls zu überprüfen, in diesem Fall Ihr c-Programm.

echo $? 

Die Shellvariable $? ist der Rückkehrcode des vorherigen Befehls.

How to find the return value of last executed command in UNIX?

Wenn Sie den Wert im Code überprüfen möchten, nur cout der Wert unmittelbar vor der Rückkehr.

0

main ist speziell, vor allem, weil Sie es nicht selbst anrufen können. Der Wert, den es zurückgibt, wird an das Betriebssystem zurückgegeben, das alles tut, was angemessen ist. Der C++ - Standard kann nicht diktieren, wie das Betriebssystem verschiedene Rückgabewerte behandelt, daher stellt es eine Abstraktion bereit: Sie können return EXIT_SUCCESS verwenden, um Erfolg anzuzeigen, und Sie können return EXIT_FAILURE verwenden, um einen Fehler anzuzeigen. (Sie können auch return 0 verwenden, um return EXIT_SUCCESS zu bedeuten; das Laufzeitsystem des Programms muss dies richtig handhaben).Die Werte der Makros EXIT_SUCCESS und EXIT_FAILURE sind für das Betriebssystem geeignet, für das das Programm kompiliert wurde. Während 0 der typische Wert für EXIT_SUCCESS ist, ist es sicherlich möglich, dass ein Betriebssystem einen anderen Wert benötigt, und EXIT_SUCCESS wird den entsprechenden Wert für dieses Betriebssystem haben. Selbst wenn Sie den von main zurückgegebenen Wert überprüfen könnten, würde es Ihnen nicht viel sagen, ohne auch zu wissen, welchen Wert das OS von einem erfolgreichen Programm erwartet.