Article View: pl.comp.lang.c
Article #775Re: argv
From: Michal Malecki
Date: Mon, 02 Feb 1998 12:02
Date: Mon, 02 Feb 1998 12:02
48 lines
2810 bytes
2810 bytes
Maciej MOCHOL <mmochol@elka.pw.edu.pl> wrote:
: On Wed, 21 Jan 1998, Marek Kotowski wrote:
:> "glowna" :-)). I jeszcze jedno: w kilku postingach
:> zauwazylem swojego czasu nastepujaca definicje main
:>
:> void main(void)
:> ...
:>
:> To blad. Funkcja main powinna byc zawsze typu int. Tak
:> stanowi standard. Roznica ma znaczenie dla sekwencji
:> wolajacej i konczacej funkcje main. Dzialanie programu, w
:> ktorym main ma typ void, jest - formalnie rzecz biorac -
:> niezdefiniowane.
: Na wiekszosci maszyn zwracanie argumentu funkcji jest realizowane
: przez - zazwyczaj - rejestry. Nie ma to __zadnego__ wplywu na
: sekwencje wolajaca, maja natomiast argumenty wejsciowe - stos.
: void main(void) jest stosowane w bardzo wielu programach i ma na
: celu podkreslenie ze sie nie zwraca zadnych wartosci.
Ja juz sie raz wypowiadalem na temat zwracania wartosci przez funkcje main.
Zeby sie nie "powtarzac drugi raz", przypomne szanownym kolegom, ze funkcji
main nie wywoluje zadna funkcja w programie, lecz SYSTEM! A system ma swoja
deklaracje funkcji main:
int main( int argc, char** argv, char** envp );
i co go to obchodzi, ze ktos sobie zadeklaruje
void main( void );
Dla systemu jedyna rzecz to przekazac w/w parametry do owej funkcji i zabrac
ze stosu, wzglednie odczytac z rejestru procesora odpowiednia wartosc.
System nic nie interesuje to, ze ktos napisal sobie void. Po prostu zbierze
sobie wartosc. I nawet ewentualnie ja sobie nawet zinterpretuje.
Pisalem juz zreszta o tym, jak ma zwyczaj interpretowac owa wartosc AmigaDOS.
Dlatego tez funkcje main nalezy ZAWSZE W KAZDYM PRZYPADKU deklarowac ze
zwracanym typem wartosci int i na koncu programu umieszczac "return 0".
Ewentualnie inna wartosc, jaka sie chce zwrocic systemowi.
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Technical Details
Message-ID:
<6b4ck5$477@polonez.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!news.man.lodz.pl!not-for-mailReferences:
<Pine.LNX.3.96.980118170312.17197A-100000@qrnik.knm.org.pl> <34C5278D.10A8@bdk.lublin.pl> <34C5B81A.8C6@imm.org.pl> <Pine.GSO.3.95.980128125122.7883N-100000@neutron.elka.pw.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!news.man.lodz.pl!not-for-mail From: Michal Malecki <sektor@zly.kis.p.lodz.pl> Newsgroups: pl.comp.lang.c Subject: Re: argv Date: 2 Feb 1998 12:02:13 GMT Lines: 48 Message-ID: <6b4ck5$477@polonez.man.lodz.pl> References: <Pine.LNX.3.96.980118170312.17197A-100000@qrnik.knm.org.pl> <34C5278D.10A8@bdk.lublin.pl> <34C5B81A.8C6@imm.org.pl> <Pine.GSO.3.95.980128125122.7883N-100000@neutron.elka.pw.edu.pl> NNTP-Posting-Host: sektor@zly.kis.p.lodz.pl User-Agent: tin/pre-1.4-980105 (UNIX) (SunOS/5.5.1 (i86pc)) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit