[elektro] Megin cééé (de lassan a magas)
Gabor Ambruzs
ambruzsg at szocimotoros.hu
Sat Mar 23 11:51:25 CET 2013
a lényeg hogy egy függvény használatát kód szinten meg kell előzze a
deklarációja.
A deklaráció alapesetben lehet maga a definíció is tehát a függvény
explicit megadása, illetve el is válhat a definíciótól ebben az
esetben csak a függvény prototítusát adod meg (visszatérés, név,
paraméter)
amikor egy fordítási egységet feldolgoz a fordító, az első dolga az
include sorrendnek megfelelően összekészíteni egy előfeldolgozott
állományt amiben szerepelni fog minden header. Gyakorlatilag képzelj
el egy szöveg szintű másolást.
Ennek a bemásolgatásnak az eredménye végső soron az kell legyen minden
c file esetében, hogy az összes hivatkozott szimbólum (legyen az
változó vagy függvény) deklarációja fellelhető legyen a hivatkozás
előtt.
Ezt elérheted úgy is hogy extern deklarációval jelzed az adott
fordítási egységben hogy az adott szimbólum más fordítási egységben
kerül definiálásra, illetve include-olhatod a másik fordítási egység
header-jét amiben megtalálható a deklaráció, vagy - ezt nem illik
használni - akár a h-ban is definiálhatod a szimbólumot.
G.
Skandar Graun <sgraun at gmail.com> írta (2013. március 23. 10:51):
> Kezd összeállni.
>
> Most csak az vetődött fel bennem, hogy a források a függvények
> hollétéről hogy tudnak? Pontosabban a hierarchia kérdése a lényeg.
> Mert ugyanezt eljátszottam fügvénnyel is. A main-ban deklarált
> függvényt nem tudta a masik.c, de a masik.c függvényeit látta a main.c
>
> Ábrahám Gábor <agabor2 at gmail.com> írta (2013. március 23. 10:45):
>> Ami egy függvényen belül van deklarálva, az csak abban a függvényben
>> látszik.
>>
>> Ami egy forrásfile-ban, a függvényeken kívül van deklarálva, az alapesetben
>> minden forrás, minden függvényéből elérhető.
>> Külön kell rendelkezni, ha ezt nem akarod (static).
>>
>> Ahhoz, hogy egy másik forrásban lévő változóra hivatkozni is lehessen,
>> meg kell mondani a fordítónak, hogy létezik valahol egy ilyen (extern).
>>
>> A források külön fordítódnak, nincs "információ áramlás" közöttük.
>> A keretrendszer, project vagy make file független a nyelvtől.
>> Egy integrált környezet persze "tudhatná", hogy neked hol milyen globális
>> változóid vannak, de nem így van a nyelv kitalálva.
>>
>> Gábor
>>
>>
>> ----- Eredeti üzenet -----
>> From: Skandar Graun
>> Sent: Saturday, March 23, 2013 9:38 AM
>> To: elektro at tesla.hu
>> Subject: Re: [elektro]Megin cééé (de lassan a magas)
>>
>> Értem... bár még emésztem a logikát.
>> Megyek, próbálom.
>>
>> Ábrahám Gábor <agabor2 at freemail.hu> írta (2013. március 23. 9:16):
>>> A főprogram egy másik file-ban van?
>>> A változó, amit használni akarsz, gondolom nem a
>>> főprogramban van deklarálva, hanem azon kívül,
>>> csak abban a file-ban, azaz global.
>>>
>>> file1.c
>>>
>>> int akarmi;
>>> ...
>>> main()
>>> {
>>> akármi=1;
>>> rutin();
>>> printf("%d", akarmi);
>>> }
>>>
>>> file2.c
>>>
>>> extern int akarmi;
>>>
>>> rutin()
>>> {
>>> akarmi = 2;
>>> }
>>>
>>>
>>> Valahogy így.
>>>
>>> Gábor
>>>
>>> ----- Eredeti üzenet -----
>>> From: Skandar Graun
>>> Sent: Saturday, March 23, 2013 8:46 AM
>>> To: elektro
>>> Subject: [elektro] Megin cééé (de lassan a magas)
>>>
>>> Sziasztok!
>>>
>>> Az hogy van, hogy egy .c file hozzá van adva a projecthez, a benne
>>> levő rutinokat tudom használni, de ha az ebben levő rutinba be akarok
>>> tűzni egy, a főprogramban deklarált változót, az közli, hogy nem
>>> ismeri.
>>> Hogy tudom neki megmagyarázni, hogy ismerned kéne...
>>> Erre a filére nem találtam sehol include sort.
>>>
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>>
>>>
>>>
>>> -----
>>> A(z) üzenetben nem található vírus.
>>> Ellenőrizte: AVG - www.avg.com
>>> Verzió: 2013.0.2904 / Vírus adatbázis: 2641/6175 - Kiadás dátuma:
>>> 2013.03.14.
>>> A belső Vírusadatbázis elavult.
>>>
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
>>
>>
>> -----
>> A(z) üzenetben nem található vírus.
>> Ellenőrizte: AVG - www.avg.com
>> Verzió: 2013.0.2904 / Vírus adatbázis: 2641/6193 - Kiadás dátuma:
>> 2013.03.20.
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list