Hvad betyder return-to-zero i C-sprog?


Bedste svar

Jeg formoder, at du taler om funktionen “main ()”?

I UNIX / Linux, hvor C blev opfundet (og muligvis i andre operativsystemer), når et program afsluttes, returneres det en “exit-status”, som systemet, der startede det kører, kan bruge til at fortælle, om det lykkedes eller mislykkedes.

Et returneret resultat på nul betyder “Alt fungerede OK!” – et resultat, der ikke er nul, angiver en slags fejlkode.

Dette bruges ikke meget (hvis overhovedet) i grafiske miljøer, hvor folk starter programmer fra et ikon eller noget. Men i kommandolinjeapplikationer er det en gave.

Tag for eksempel “make” -værktøjet – som bruges til at kompilere og linke komplicerede applikationer. De forskellige kompilatorer og linkere udfører “return 0”, når det program, de arbejder med, kompileres korrekt – eller de “returnerer 1”, hvis det ikke kompilerede.

Programmet “make” undersøger returneringen status for hvert program, det kører – og afbryder build, hvis et af dem returnerer andet end nul.

Dette er en rigtig praktisk ting.

Så jeg har et program, jeg skrev, at gør noget billedbehandling. Hvis filen, den læser, er beskadiget, gør den en “return 2” – hvis filen ikke findes, gør den “return 1”, og kun hvis alt fungerede OK, “returneres 0”.

Nu – hvis jeg har noget kompliceret program at bygge, der har billeder indbygget i dets frigivelsespakke – kan jeg få min Makefile til at udløse billedbehandlingsprogrammet – og hvis det mislykkes af en eller anden grund – vil det bryde “make” -kørslen, så jeg kan rette det.

Alle UNIX / Linux kommandolinjeværktøjer returnerer en værdi, der ikke er nul for fejl – så selvom du bare bruger standardprogrammet “rm” til at slette en fil – vil det gøre en “Return 0”, hvis filen blev slettet med succes eller en “return 1”, hvis den af ​​en eller anden grund ikke kunne slettes.

Et par programmer returnerer forskellige koder afhængigt af, hvad der nøjagtigt gik galt – men dette er retfærdigt usædvanligt.

Bemærk også, at når du kalder “exit (0)” -funktionen – er parameteren “0” også returstatus … så også “exit (0)”, når tingene fungerer godt og ” exit (1) ”når de ikke er det.

Svar

Der a på mange forskellige steder kan du udføre en return 0 udsagn i C, så dette spørgsmål vil få en række svar.

Lad mig besvare et specifikt tilfælde:

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

{

...

return 0;

}

Hvorfor returnerer vi 0 fra main?

I * IX-familien af ​​operativsystemer, eksemplificeret ved først UNIX og derefter Linux, findes der et program med en enkelt heltal udgangskode, nominelt brugt til at indikere succes eller fiasko.

I de fleste tilfælde angiver en værdi på 0 succes, og en værdi, der ikke er nul, er en fiasko, hvor værdien normalt angiver nogle specifikke fejloplysninger.

C- og C ++ – programmer, der kører på * IX-systemer, giver denne udgangskode enten ved hjælp af en heltal, der sendes til standardbiblioteket exit () -funktionen eller heltal returneret fra main () .

Så i dette tilfælde returnerer vi 0 fra main for at indikere til * IX-systemer, at programmet afsluttes med en succeskode.

-Mark

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *