Ich möchte wissen, wie und wann ich die exit()
Funktion wie das Programm in meinem Buch verwenden kann:
#include<stdio.h>
void main()
{
int goals;
printf("enter number of goals scored");
scanf("%d",&goals);
if(goals<=5)
goto sos;
else
{
printf("hehe");
exit( );
}
sos:
printf("to err is human");
}
Wenn ich es ausführe, wird ERROR: call to undefined function exit () angezeigt .
Außerdem möchte ich wissen, wie ich eine Option zum Schließen des Fensters erstellen kann, in dem das Programm ausgeführt wird. Zum Beispiel habe ich ein menügesteuertes Programm erstellt, das mehrere Optionen hatte, und eine davon war "Menü verlassen" . Wie kann ich das Programm beenden (dh das Fenster schließen)?
void main()
OTOH ist einfach falsch . Genauso wieexit();
es falsch ist und das Weglassen#include <stdlib.h>
falsch ist.Antworten:
Versuchen Sie es
exit(0);
stattdessen. Dieexit
Funktion erwartet einen ganzzahligen Parameter. Und vergiss es nicht#include <stdlib.h>
.quelle
Die
exit
Funktion ist im stdlib-Header deklariert, also müssen Sie habenan der Spitze Ihres Programms, um verwenden zu können
exit
.Beachten Sie auch, dass
exit
ein ganzzahliges Argument erforderlich ist, sodass Sie es nicht so aufrufen können, sondernexit()
alsexit(0)
oder aufrufen müssenexit(42)
. 0 bedeutet normalerweise, dass Ihr Programm erfolgreich abgeschlossen wurde und Werte ungleich Null als Fehlercodes verwendet werden.Es gibt auch vordefinierte Makros
EXIT_SUCCESS
undEXIT_FAILURE
zexit(EXIT_SUCCESS);
quelle
exit
ein ganzzahliges Argument erforderlich ist, sondern auch zu erklären, warum ein ganzzahliges Argument erforderlich ist und dass einige Compiler das explizite Argument benötigen#include <stdlib.h>
.exit(int code);
ist in deklariert,stdlib.h
so dass Sie eine benötigenAußerdem:
- Sie haben keinen Parameter für das
exit()
, es erfordert einenint
so bereitgestellten.- Brennen Sie dieses Buch, es verwendet,
goto
was (für alle außer Linux-Kernel-Hackern) schlecht, sehr, sehr , sehr schlecht ist.Edit:
Oh, und
ist auch schlecht, es ist:
quelle
goto
ist gelegentlich das Richtige (und der Linux-Kernel bietet viele Beispiele dafür, aber es ist nicht der einzige Code, der ihn verwenden kann). Aber das Beispiel von OP ist eindeutig nicht einer dieser Fälle, also sollte dieses Buch verbrannt werden :).Versuchen Sie, den Mann zu verlassen .
Oh und:
quelle
Die
exit()
Funktion ist ein Funktionstyp mit einem Rückgabetyp ohne Argument. Es wird durch die stdlib-Headerdatei definiert.Sie müssen
( exit(0) or exit(EXIT_SUCCESS))
oder(exit(non-zero)
oder verwendenexit(EXIT_FAILURE) )
.quelle
Das folgende Beispiel zeigt die Verwendung der
exit()
Funktion.Ausgabe
quelle
Sie müssen eine Zeile mit hinzufügen
#include <stdlib.h>
, um diese Header-Datei einzuschließen, undexit
einen Wert zurückgeben, also weisen Sie eine Ganzzahl in zuexit(any_integer)
.quelle
Zusätzlich zum Zurückgeben eines Exit-Codes an den übergeordneten Prozess -
Unter UNIX ist ein wichtiger Aspekt, der meiner Meinung nach weggelassen wurde, dass exit () beim ersten Aufruf (in umgekehrter Reihenfolge) alle Funktionen aufruft, die durch den Aufruf von atexit () registriert wurden.
Weitere Informationen finden Sie in SUSv4.
quelle
Unter Unix-Betriebssystemen gehört exit zur Gruppe der Systemaufrufe. Systemaufrufe sind spezielle Aufrufe, mit denen Benutzercode (Ihr Code) Kernelcode aufrufen kann. Wenn Sie den Aufruf beenden, werden einige betriebssystemspezifische Bereinigungsaktionen ausgeführt, bevor die Steuerung an das Betriebssystem zurückgegeben wird. Dadurch wird das Programm beendet.
Einige Compiler geben Ihnen den gleichen Opcode aus diesen beiden Beispielen, andere nicht. Zum Beispiel enthält der Opcode der ersten Funktion keinen Opcode für die Stapelpositionierung, der wie bei jeder anderen Funktion im zweiten Beispiel enthalten ist. Sie könnten beide Beispiele zusammenstellen und zerlegen, und Sie werden den Unterschied sehen.
Sie können exit aus einem beliebigen Teil Ihres Codes verwenden und sicherstellen, dass der Prozess beendet wird. Vergessen Sie nicht, einen ganzzahligen Parameter anzugeben.
quelle
Schreiben Header - Datei
#include<process.h>
und ersetzenexit();
mitexit(0);
. Dies wird definitiv in Turbo C funktionieren; für andere Compiler weiß ich nicht.quelle
exit
Funktion ist in deklariert<stdlib.h>
.Schlechte Programmierpraxis. Die Verwendung einer goto-Funktion ist ein vollständiges Nein Nein in der C-Programmierung.
Fügen Sie auch die Header-Datei stdlib.h hinzu, indem Sie
#include <iostream.h>
für die Verwendung derexit()
Funktion schreiben . Denken Sie auch daran, dass die Funktion exit () ein ganzzahliges Argument akzeptiert. Verwenden Sieexit(0)
diese Option, wenn das Programm erfolgreich abgeschlossen wurde, und beenden Sie dieexit(-1)
Funktion mit einem Wert ungleich Null als Argument, wenn das Programm einen Fehler aufweist.quelle
<iostream.h>
ist spezifisch für C ++ und hängt nicht mit<stdlib.h>
dem tatsächlich benötigten Header zusammen. Die einzigen tragbaren Argumente für dieexit
Funktion sind0
,EXIT_SUCCESS
undEXIT_FAILURE
. Die Verwendung eines Werts ungleich Null zur Bezeichnung eines Fehlers ist spezifisch für UNIX-ähnliche Systeme (und wahrscheinlich einige andere). Verlassen Sie sich nicht auf tragbaren Code.Nehmen Sie es
stdlib.h
in Ihren Header auf und rufen Sie esabort();
an einer beliebigen Stelle auf, an der Sie Ihr Programm beenden möchten. So was:Wenn der Benutzer den Schalter betritt, akzeptiert er dies und gibt es dem Fall 3, in dem Sie die
abort
Funktion aufrufen . Der Bildschirm wird sofort nach dem Drücken der Eingabetaste verlassen.quelle
abort
ist hier nicht geeignet, es werden keineatexit
Handler aufgerufen oder offene Dateipuffer geleert. Es sollte nur für eine abnormale Programmbeendigung verwendet werden, z. B. für fehlgeschlagene Zusicherungen usw. Für eine normale Programmbeendigungexit
sollte es verwendet werden.Verwenden Sie process.h anstelle von stdlib und iostream ... Es funktioniert zu 100%.
quelle
<iostream>
Header ist spezifisch für C ++; Die Frage ist über C.