🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: argv

#759
From: Qrczak
Date: Fri, 23 Jan 1998 15:12
57 lines
3086 bytes
On Fri, 23 Jan 1998, Marek Kotowski wrote:

> > Nie "wywołać", bo jawnie się jej nie wywołuje. Dlatego może mieć różną
> > liczbę argumentów. To ma być wyjątkowe? Przecież funkcja o nazwie
> > moja_funkcja też może mieć dowolną liczbę argumentów!
> 
>   Nieprawda. W jezyku C kazda funkcja ma dokladnie okreslona liczbe
> argumentow. Po to m.in. wprowadzono prototypy, by zapewnic
> przestrzeganie w modulach poprawnosci wywolywan funkcji,
> w tym liczby argumentow.

Ale funkcja main nie ma wcześniej prototypu! _Jedyną_ różnicą jest to,
co się dzieje "na zewnątrz" funkcji main. Oprócz tego, że jest
wywoływana automatycznie w określonej sytuacji, jest taka jak wszystkie.
Mogę zdefiniować:

moja_funkcja()
{ ... }

a w innym programie mogę tak:

moja_funkcja(int n)
{ ... }

To jest oczywiste, prawda?

I _dokładnie_ to samo jest w przypadku funkcji main. Też w jednym
programie może mieć inną liczbę argumentów niż w innym.

Oczywiście jeśli zdefiniuję funkcję main z argumentem typu double, to
program źle zadziała. Ale przynajmniej teoretycznie powinien się
skompilować, chyba że jakiś kompilator będzie miał dodane sztuczne
ograniczenia zabezpieczające przed tym (gcc łyka i
char *main(double x)).

Po prostu jest tak: Mamy zbiór dowolnych funkcji. Kompilujemy każdą w
taki sam sposób. Na koniec dołączamy kod ze standardowego modułu (już
nie napisany w C), który jakoś tam wywołuje funkcję main i interpretuje 
odpowiednio jej wynik.

> Na koniec dodam jeszcze jeden argument: w standardzie (mam
> ksiazke Plaugera & Brodiego) napisano wprost, ze np. argc mozna
> modyfikowac - zalozenie pozornie zbedne. W koncu co mogloby
> byc zlego w zmodyfikowaniu liczby przekazywanej przez wartosc?
> Uznano jednak za wazne to podkreslic, jako ze argc przekazywane
> jest z zewnatrz, przez byt :-), o ktorym teoretycznie nic nie
> wiadomo.

IMHO nie pozornie, a faktycznie zbędne. Tak _musiało_ być. Zostało to
powiedziane, żeby rozwiać ewentualne wątpliwości tych, którzy myślą, że
main jest czymś szczególnym :-)

-- 
                                 QRCZAK
    __("<              Marcin Kowalczyk
    \__/              qrczak@knm.org.pl
     ^^      http://qrczak.home.ml.org/
Technical Details
Message-ID: <Pine.LNX.3.96.980123160236.626B-100000@qrnik.knm.org.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!qrnik.knm.org.pl!qrnik.knm.org.pl!qrczak
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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!qrnik.knm.org.pl!qrnik.knm.org.pl!qrczak
From: Qrczak <qrczak@knm.org.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: argv
Date: Fri, 23 Jan 1998 16:12:28 +0100
Organization: Klub Nieszkodliwych Manjaków
Lines: 58
Message-ID: <Pine.LNX.3.96.980123160236.626B-100000@qrnik.knm.org.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>
NNTP-Posting-Host: ppp2-cst88.warszawa.tpnet.pl
Mime-Version: 1.0
In-Reply-To: <34C8723E.5485@imm.org.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit