🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #763

Re: argv

#763
From: Michal Malecki
Date: Mon, 26 Jan 1998 12:57
51 lines
3283 bytes
Marek Kotowski <mkot@imm.org.pl> wrote:
: Mechanik wrote:
:> Zaraz, zaraz. A taka funkcja ile ma argumentow:
:> 
:> int taka_jedna();
:> 

: Taka funkcja wedlug K&R nie ma argumentow. Wedlug zas
: standardu ANSI C jej argumenty sa nieokreslone. Nie
: jest to zatem pelny prototyp funkcji. Jesli funkcja
: ma nie miec argumentow, powinno to byc zaznaczone
: explicite slowem void:

: int taka_jedna(void);

Moze niespecjalnie szczesliwie zacytowalem jedna z tych wypowiedzi toczacych
sie wokol funkcji main. Aby nie bylo watpliwosci:

1. Kazda funkcja ma scisle okreslona liczbe argumentow (powyzsza funkcja ma
0 argumentow).
2. Funkcja main moze miec 3 prototypy:
int main( );
int main( int argc, char** argv );
int main( int argc, char** argv, char** envp );

Takie prototypy sie stosuje. Niemniej jednak oczywiscie funkcja ta moze miec
absolutnie dowolny prorotyp! Naglowek tej funkcji tylko po prostu wskazuje,
jakich argumentow taka funkcja moze oczekiwac na stosie (wzglednie w rejestrach
procesora). Moze te argumenty uwzglednic albo je olac. Nie ma tez zadnych
przeciwwskazan, zeby zadeklarowac inne parametry! Tyle tylko, ze moga byc to
bezsensowne wartosci. Musimy jednie pamietac, ze pierwszy parametr jest liczba
calkowita o dlugosci sizeof (int), a dwa nastepne dwustopniowym wskaznikiem
na typ o dlugosci sizeof (char).
No i jeszcze jedno. Wartosc, jaka po zakonczeniu funkcji main znajdzie sie na
stosie (lub w rejestrze, w ktorym oczekuje sie wartosci zwracanej) jest
przekazywana srodowiskowi programu (ktory logicznie wywoluje funkcje main).
Tu tez trzeba uwazac, dlatego, ze jezeli zadeklarujemy zwracany typ funkcji
main jako void, to do srodowiska programu zostanie zawsze przekazana wartosc
zwrocona przez ostatnio wywolywana funkcje (chyba, ze uzyjemy exit)! Pod DOS-em
i UNIX-em nie musi to miec znaczenia, jezeli program nie musi zwracac wartosci
srodowiskowi programu. Jeden z moich kumpli nacial sie jednak w ten sposob na
amidze (program przebiegl poprawnie, ale po wyjsciu zyztem zglosil blad).

Mam nadzieje, ze rozwialo to wszystkie watpliwosci na temat funkcji main.
Pozdrawiam,

-- 
.---.     .   . - 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: <6ai18e$npt@polonez.man.lodz.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!uw.edu.pl!uucp-gw.cyf.gov.pl!news.memax.krakow.pl!news.task.gda.pl!news.man.lodz.pl!not-for-mail
References: <Pine.LNX.3.96.980118170312.17197A-100000@qrnik.knm.org.pl> <34C5278D.10A8@bdk.lublin.pl> <34C5B81A.8C6@imm.org.pl> <Pine.LNX.3.96.980122183153.525B-100000@qrnik.knm.org.pl> <34C8723E.5485@imm.org.pl> <6aaotj$3ra$2@sunsite.icm.edu.pl> <34C9F634.1AF9@imm.org.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!uw.edu.pl!uucp-gw.cyf.gov.pl!news.memax.krakow.pl!news.task.gda.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: 26 Jan 1998 12:57:50 GMT
Lines: 51
Message-ID: <6ai18e$npt@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.LNX.3.96.980122183153.525B-100000@qrnik.knm.org.pl> <34C8723E.5485@imm.org.pl> <6aaotj$3ra$2@sunsite.icm.edu.pl> <34C9F634.1AF9@imm.org.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