Wat is het verschil? Welke heeft de voorkeur, of wanneer moet ik ze respectievelijk gebruiken?
Antwoord 1, autoriteit 100%
exit(1)
(meestal) geeft een mislukte beëindiging aan. Het gebruik ervan is echter niet-draagbaar. Op OpenVMSgeeft exit(1)
bijvoorbeeld daadwerkelijk succes aan.
Alleen EXIT_FAILURE
is de standaardwaarde voor het retourneren van mislukte beëindiging, maar 1
wordt in veel implementaties voor hetzelfde gebruikt.
Dus om samen te vatten:
Als je perfect draagbare code wilt schrijven,
EXIT_FAILURE
voor het geval van een fout. Terwijl,
U kunt ofwel exit(0)
of EXIT_SUCCESS
gebruiken voor succes.
Merk op dat EXIT_SUCCESS
of 0
beide hetzelfde zijn.
Referentie:
C99-standaard: 7.20.4.3 De functie exit
Para 5
Ten slotte wordt de controle teruggegeven aan de hostomgeving. Als de waarde van status
zero
of . is
EXIT_SUCCESS
, een door de implementatie gedefinieerde vorm van de status succesvolle beëindiging is
teruggekeerd. Als de waarde van statusEXIT_FAILURE
is, een door de implementatie gedefinieerde vorm
van de status mislukte beëindiging wordt geretourneerd. Anders is de geretourneerde status
implementatie-gedefinieerd.
Antwoord 2, autoriteit 19%
Voor echt draagbare code heeft EXIT_FAILURE
de voorkeur. De C-standaard definieert alleen betekenis voor drie waarden: EXIT_FAILURE
, 0
en EXIT_SUCCESS
(met 0
en EXIT_SUCCESS
in wezen synoniem).
Vanuit praktisch oogpunt accepteren de meestetypische systemen ook andere waarden. Als het geheugen dient, kunt u met Linux elke 8-bits waarde en Windows 16-bits waarden retourneren. Tenzij u oprecht geïnteresseerd bent in het overzetten naar een IBM-mainframe, VMS, enz., is de kans groot dat u niet om de meeste systemen geeft die niet ten minste 8-bits retourwaarden ondersteunen.
Antwoord 3, autoriteit 7%
Gebruik EXIT_FAILURE
. Het is een constante die door het hele besturingssysteem wordt gebruikt. De waarde kan iets anders zijn dan 1 en is ook meer beschrijvend in de code.
Antwoord 4
Er zijn conventies voor wat voor soort statuswaarden bepaalde programma’s moeten retourneren. De meest voorkomende conventie is gewoon 0 voor succes en 1 voor mislukking. Programma’s die vergelijkingen uitvoeren, gebruiken een andere conventie: ze gebruiken status 1 om een mismatch aan te geven en status 2 om aan te geven dat ze niet kunnen vergelijken. Je programma moet een bestaande conventie volgen als een bestaande conventie daarvoor zinvol is.
Sommige niet-POSIX-systemen gebruiken verschillende conventies voor de uitgangsstatus
waarden.For greater portability
kunt u de macro’sEXIT_SUCCESS
gebruiken
enEXIT_FAILURE
voor de conventionele statuswaarde voor succes en
respectievelijk falen. Ze worden gedeclareerd in het bestand stdlib.h.
Antwoord 5
Niet alleen VMS heeft zijn eigen regels, ook AmigaDOS definieert een retourcode onder de 5 als oké.