Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
36
3.2.4Kwalifikatorextern
ROZDZIAŁ3.ZMIENNEIICHNAZWY
Poprzedzeniezmiennejdeklarowanejwewnątrzlubnazewnątrzblokuprogramu
kwalifikatoremexternoznaczadlakompilatora,żemiejsceprzechowywaniazmien-
nejzostałolubzostaniesprecyzowanewinnymmiejscuprogramu.Wprzypadku
takimwconajmniejjednymmiejscuprojektumusiistniećdeklaracjazmiennejotej
samejnazwieniepoprzedzonakwalifikatoremmiejscabędzietojednocześniede-
finicjądanejzmiennej.Wfaziełączeniamodułówprogramuwszystkieodwołania
dozmiennychzdeklarowanychzkwalifikatoremexternzostanąskojarzonez
właśniezmienną.
3.3
Kombinacjekwalifikatorów
Zmiennastatycznazkwalifikatoremvolatilejestnajwłaściwszymrozwiązaniem
dlaobsługirejestrówurządzeń,którewykorzystująmodelukładuwejścia-wyjścia
mapowanegodoprzestrzeniadresowej.WedługzaleceńANSItwórcykompilatorów
powinnitakjedostosować,byimplementacjabyławpełnizgodnazzagadnieniami
sprzętowymi.
Zmiennastatycznazkwalifikatoramiconstvolatilewydajesięszczególnie
przydatnawprzypadkudostępudorejestrówurządzeńwejściowo-wyjściowych,
któreprzeznaczonewyłączniedoodczytu,jaknp.zegarczasurzeczywistego.
Kwalifikatorconstzapewni,żekompilatorzasygnalizujejakobłędnewszelkiepró-
byzapisutakichzmiennych.
Zmienneautomatycznezkwalifikatoramiconstvolatileobrazująsytuację,
gdyinneprocesywspółbieżnemogązmieniaćdanązmienną,podczasgdypisany
programnie.
3.4
Zakresważnościnazwzmiennych
Przedstawionapowyżejwiedzanatematzmiennychautomatycznych,statycznych
iichkwalifikowanychwersjipozwalazrozumieć,jakijestnczasżycia”definiowa-
nychprzezprogramistęzmiennych.Trochęinnymzagadnieniemjestzakresważno-
ścinazwzmiennych:zmiennamożeistnieć,leczmożeniebyćwdanymfragmencie
programudostępna.Poniższerozważaniapodsumowujązagadnieniadostępuincza-
sużycia”zmiennych.
Zmiennetworzoneautomatycznieniedostępnepozablokiemkodu,wktórym
zostałyutworzone.Bloktakitonietylkociałofunkcji,aletakżedowolnyfragment
koduwewnątrzfunkcjiograniczonynawiasamiklamrowymi{}.Zmienneauto-
matycznezdefiniowanewtakimblokutworzoneprzywejściudobloku,aich
zawartośćjesttraconaprzywyjściuzbloku.
Zmienneozakresiefunkcjitoparametrywywołaniatejfunkcji,etykietytworzo-
newewnątrzfunkcjiizmiennetworzonewgłównymblokufunkcji.Wszystkieone
ważne(tzn.ichnazwyznanekompilatorowi)wewnątrzcałejfunkcji,począwszy
odmiejscaichdeklaracji,oileniezostanąprzesłonięte(patrzponiżej).Dodat-
kowozawartośćzmiennychstatycznychjestprzechowywanamiędzywywołaniami
funkcji.