Article View: pl.comp.lang.c
Article #745Re: argv
From: Marek Kotowski
Date: Thu, 22 Jan 1998 09:34
Date: Thu, 22 Jan 1998 09:34
51 lines
3079 bytes
3079 bytes
milosz danielewski wrote:
>
> On Wed, 21 Jan 1998 12:13:24 +0100, Marek Kotowski <mkot@imm.org.pl>
> wrote:
> > Pozwole sobie nie zgodzic sie.
> > Otoz jesli funkcja main jest rozna od innych, to wlasnie
> >"w sensie argumentow i zwracania wartosci".
>
> Niby dlaczego ? Czyzby nie dalo sie jej przekazaywac argumentow jak
> kazdej innej funkcji i czy nie zwraca ona tak samo wartosci ?
Rozumiem, ze postuluje Pan wywolanie
main(cos1, cos2); :-)
Jesli mowimy tylko o C, a nie o innych jezykach czy srodowiskach,
z ktorych wywoluje sie program w C, to to moze oznaczac tylko wywolanie
rekurencyjne main. W standardzie nie ma oficjalnie czegokolwiek
na ten temat. Widzialem kilka programow zglaszanych na konkurs
IOCCC, w ktorych wywolywano rekurencyjnie main. Ale to inna sprawa.
Co do sprawy glownej. Main jest funkcja specjalna. Nie wiadomo,
kto i jak wywoluje main. Owszem, programiscie dane jest wszystko,
co sie dzieje miedzy wywolaniem main i jej koncem. Wie, jak wywolac
funkcje, i jak zwracac wartosci. Ale nie wie, np. komu zwraca
wartosc, konczac main. To moga byc inne programy, srodowiska, etc.
Standard nieprzypadkiem duzo o tym mowi, by bylo jasne, jak rzecz
wyglada, czy powinna wygladac.
Podam przyklad: programowalem kiedys w kompilatorze COBOL-u,
ktory pozwalal - poprzez asembler wbudowany - wywolywac programy
w C. Argumenty dla main przekazywalo sie w ES:BX. Nie bylo to zatem
przekazywanie argumentow "jak kazdej innej funkcji".
I jeszcze slowo co do wywolania main: jesli Pan z gory zalozy,
ze wywolanie tej funkcji jest takie same jak kazdej innej w
programie w jezyku C, to tym samym zalozy Pan implicite, ze
zostala ona wywolana przez inny kod w jezyku C, z wlasna funkcja
main, co jest oczywiscie sprzecznoscia sama w sobie.
Owszem, autorzy standardu starali sie, by funkcja dzialala mozliwie
podobnie, jak inne funkcje w C. Ale oczywiscie sa wyrazne
roznice (opisalem podstawowe z nich w innym poscie, chociaz,
zdaje sie, niewiele to niektorych dyskutantow obchodzi).
Pozdrawiam
Marek Kotowski
PS. Moj przyjaciel podpowiada mi dobre porownanie programu
w C do duszy czlowieka. Nie wiemy, co bylo z nasza dusza
przed naszym urodzeniem, i co bedzie z nia po naszym
zgonie. :-) Niestety, nie ma tu zadowalajacego standardu,
ktory by cos o tym mowil.:-)
Technical Details
Message-ID:
<34C712B4.22A0@imm.org.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.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> <34C654EB.8EE@bdk.lublin.pl> <34C5D854.72FF@imm.org.pl> <34c63d57.923429@news.icm.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!news.nask.pl!not-for-mail From: Marek Kotowski <mkot@imm.org.pl> Newsgroups: pl.comp.lang.c Subject: Re: argv Date: Thu, 22 Jan 1998 10:34:44 +0100 Organization: Instytut Maszyn Matematycznych Lines: 51 Message-ID: <34C712B4.22A0@imm.org.pl> References: <Pine.LNX.3.96.980118170312.17197A-100000@qrnik.knm.org.pl> <34C5278D.10A8@bdk.lublin.pl> <34C5B81A.8C6@imm.org.pl> <34C654EB.8EE@bdk.lublin.pl> <34C5D854.72FF@imm.org.pl> <34c63d57.923429@news.icm.edu.pl> NNTP-Posting-Host: 148.81.238.53 Mime-Version: 1.0 X-Mailer: Mozilla 3.01Gold (Win95; I) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit