[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