[elektro] Megin cééé (de lassan a magas)

SZIGETI Szabolcs szigiszabolcs at gmail.com
Sat Mar 23 15:04:48 CET 2013


Hali!

A következetlenségnek történelmi okai vannak. Egy változó esetében a
fordítónak mindenképpen tudni kell a típust, ahol létrehozod
ott értelemszerűn  ahol meg használod, hát nyilván ott is, hiszen mondjuk
máshogy kell kezelni egy double-t, mint egy chart.

A függvényeknél ez valójában nem lényeges, hiszen alapértelmezés, hogy int
a visszatérési értéke,a paraméterlista meg igazából nem érdekes, mert a
hívó berak valamit a a verembe, a függvény meg kiszedi, aztán ha ez nem
stimmel, a programozó vessen magára. A linkeléshez meg csak a függvény címe
kell, de az meg a fordítót nem érdekli fordításkor.
Ez így volt a régi K&R C-ben, és a prototípusokat pont ezért találták ki,
hogy az ebből eredő bajokat megelőzzék.

Szabolcs



2013. március 23. 11:23 Móczik Gábor írta, <pm_levlista at progzmaster.hu>:

> 2013.03.23. 11:13 keltezéssel, hg12345 írta:
> > alapból minden függvény "globális", a korrekt linkerek panaszkodnak, de
> lefordul a program és linkel is és fut.
> > (  a függvény elé static teszel, akkor már komolyan felháborodnak a
> linkerek, ha más fordítási egységben hivatkozol rá, de még ilyenkor is van
> olyan elvetemült linker ami megcsinálja a végrehajtható kódot. )
> > De a változók nem! Azt mindenképp "extern"-nel definiálni kell., igy
> határozod meg, hogy ez egy külső változó.
>
> A nem-static változók is ugyanúgy globálisan léteznek, nem tudsz másik
> fájlban sem ugyanolyan nevű függvényt, sem ugyanolyan nevű változót
> deklarálni (nem staticként természetesen).
>
> A különbség csak annyi, hogy a változóra error-t dob ha nincs externnel
> dekarálva, a függvényre meg a fordító csak egy warning-ot, a linker
> viszont összelinkeli.
>
> Kicsit nem következetes megoldás, bár szerintem az összes fordító/linker
> így csinálja.
>
> -----------------------------------------
>           elektro[-flame|-etc]
>


More information about the Elektro mailing list