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

Móczik Gábor pm_levlista at progzmaster.hu
Sat Mar 23 11:09:05 CET 2013


2013.03.23. 9:38 keltezéssel, Skandar Graun írta:
> Értem... bár még emésztem a logikát.

A főprogram is csak egy modul, attól még, hogy a mian() függvény ott 
van, a fordító számára semmilyen kiemelt szerepe nincs. Az abban 
deklarált globális változó pont ugyanolyan, mint bármely más fájlban 
deklarált.

Ha látni akarsz egy máshol deklarált globális változót, akkor az extern 
kulccszóval kell deklarálni (ott ahol látni akarod).

Ha nyilvánosan tudatni akarod, hogy az adott egységben ilyen meg olyan 
változók és függvények vannak, akkor azokat a H fájlban extern-ként 
felsorolhatod, ahol szükség van rá, elég csak a H fájlt include-olni.

Ez az elfogadott gyakorlat, a H fájlba ilyen prototípusokat kell 
felsorolni, úgy kell felfogni, hogy az az API, a külvilággal való 
interfész dokumentációja.

Fontos tudni, hogy attól hogy az a változó alap esetben nem látszik, 
attól még globálisan létezik, tehát ha egy másik fájlban egy ugyanolyan 
nevűt szeretnél deklarálni, akkor "multiply defined symbol" hibát fogsz 
kapni.

Ebbe véletlenül is bele lehet szaladni, pl. ha nem ismered a másik 
egységet, és nincs sehol dokumentálva, hogy ott van egy ilyen változó.

Ezért célszerű az alábbiakat követni:

- az összes nyilvános elérésre szánt globális változót a H fájlban 
tüntesd fel, és lehetőleg valami logikus nevet adj neki.

- az összes kizérólag unit-on belüli privát felhasználásra szánt 
globális változót deklaráld a C fájlban static-ként. Ekkor nem érhető el 
a fájlon kívül máshonnan, egy másik fájlban deklarálhatsz ugyanilyen 
nevű változót (static-ként), a kettő egymástól független lesz.



More information about the Elektro mailing list