Mitä paluu nollaan tarkoittaa C-kielellä?


Paras vastaus

Oletan, että puhut funktiosta “main ()”?

UNIX / Linuxissa, jossa C keksittiin (ja mahdollisesti muissa käyttöjärjestelmissä), kun ohjelma poistuu, se palauttaa ”poistumistilan”, jonka sen käynnistänyt järjestelmä voi kertoa, onnistuiko se vai epäonnistui.

Palautettu nollatulos tarkoittaa ”kaikki toimi kunnossa!” – tulos, joka ei ole nolla, tarkoittaa jonkinlaista virhekoodia.

Tätä ei käytetä paljon (jos ollenkaan) graafisissa ympäristöissä, joissa ihmiset käynnistävät ohjelmia kuvakkeesta tai muusta. Mutta komentorivisovelluksissa se on jumalatar.

Otetaan esimerkiksi ”make” -työkalu, jota käytetään monimutkaisten sovellusten kokoamiseen ja linkittämiseen. Erilaiset kääntäjät ja linkit tekevät paluun 0, kun työ, jonka parissa he työskentelevät, käännetään oikein – tai palautetaan 1, jos se ei kääntynyt.

”Tee” -ohjelma tutkii paluun jokaisen sen suorittaman ohjelman tila – ja keskeyttää rakennuksen, jos jokin niistä palauttaa muun kuin nollan.

Tämä on todella kätevä asia.

Joten minulla on ohjelma, jonka kirjoitin tekee jonkin verran kuvankäsittelyä. Jos sen lukema tiedosto on vioittunut, se palauttaa arvon 2 – jos tiedostoa ei ole, se palauttaa arvon 1 ja vain, jos kaikki toimi kunnolla, se palauttaa arvon 0.

Nyt – jos minulla on rakentaa monimutkainen ohjelma, jonka julkaisupakettiin on sisällytetty kuvia – Makefile voi käynnistää kuvankäsittelyohjelman – ja jos se jostain syystä epäonnistuu, se rikkoo ”make” -ajon, joten minä voi korjata sen.

Kaikki UNIX / Linux-komentorivityökalut palauttavat epäonnistuneen arvon, joka ei ole nolla – joten vaikka poistaisitkin vain tavallisen “rm” -ohjelman, se tekee ”Return 0”, jos tiedosto poistettiin onnistuneesti, tai ”return 1”, jos sitä ei voitu poistaa jostain syystä.

Muutama ohjelma palauttaa eri koodit riippuen siitä, mikä meni pieleen – mutta tämä on melko epätavallinen.

Huomaa myös, että kun soitat ”exit (0)” -toimintoa – parametri ”0” on myös palautustila … niin tee myös ”exit (0)”, kun asiat toimivat hyvin ja ” exit (1) ”, kun niitä ei ole.

Vastaa

Siellä a uudelleen monista eri paikoista, joissa voit suorittaa return 0 -lausekkeen C: ssä, joten tähän kysymykseen saadaan monenlaisia ​​vastauksia.

Anna minä vastaan ​​yhteen erityistapaukseen:

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

{

...

return 0;

}

Miksi palataan 0 pääosasta?

* IX -käyttöjärjestelmäjärjestelmässä, josta esimerkkinä ensin UNIX ja sitten Linux, on olemassa ohjelma, jolla on yksi kokonaisluku poistumiskoodi, nimellisesti käytetään osoittamaan onnistumista tai epäonnistumista.

Useimmissa tapauksissa arvo 0 osoittaa onnistumista ja nollasta poikkeava arvo on epäonnistuminen, ja arvo yleensä osoittaa joitain erityisiä virhetietoja.

* IX -järjestelmissä käynnissä olevat C- ja C ++ -ohjelmat antavat tämän poistumiskoodin joko kokonaiskirja-arvolla, joka välitetään vakiokirjaston exit () -funktiolle, tai kokonaisluvulla. palasi osoitteesta main () .

Joten tässä tapauksessa palautamme 0 pääkohdasta osoittamaan * IX -järjestelmille, että ohjelma päättyi onnistumiskoodilla.

-Merkki

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *