12.07.2015 Views

Programski jezik C - Pmf

Programski jezik C - Pmf

Programski jezik C - Pmf

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

9.3. VANJSKI SIMBOLI 155Uobičajena je praksa deklaracije svih funkcija koje su vanjski simbolistaviti u datoteku zaglavlja koja se onda uključuje u svaku datoteku koja tefunkcije želi koristiti, čak i u onu u kojoj su funkcije definirane. Na taj senačin izbjegava moguće nepodudaranje prototipova i definicija. Uključivanjezaglavlja u datoteku u kojoj su funkcije definirane omogućava prevodiocu daprovjeri jesu li prototipovi u skladu s definicijama.To je postupak koji se koristi s funkcijama iz standardne biblioteke. Akona primjer, želimo koristiti funkciju printf(), koja je definirana u standardnojbiblioteci, onda moramo uključiti datoteku koja sadrži njenprototip.9.3.2 Globalne varijableSvaka globalna varijabla, jednako kao i svaka funkcija, je automatski vanjskisimbol; njeno ime je vidljivo linkeru. Takvo ponašanje možemo promijenitipomoću identifikatora memorijske klase static, kao i kod funkcije. Uprimjeru,static int d;int main(void){........}Globalna varijabla d vidljiva je samo u svojoj datoteci (nije vanjska varijabla).Uočimo da je ključna riječ static ima drugačije značenje kad se primjenina lokalnu varijablu, odnosno na globalnu varijablu. Kod lokalne varijablestatic mijenja vijek trajanja varijable, a kod globalne reducira doseg.Kada se jedna globalna varijabla koristi u više datoteka, onda ona morabiti definirana u jednoj od njih, a deklarirana u svim ostalima. Posve istopravilo vrijedi i za funkcije.Kod funkcija je to pravilo lako primijeniti jer se definicija i deklaracijafunkcije jasno razlikuju. Definicija funkcije ima tijelo funkcije, dok deklaracija(prototip) nema. Kod varijabli razlika nije tako očita.Prevodilac mora jasno razlikovati definiciju od deklaracije varijable. Koddefinicije se za varijablu rezervira memorijski prostor, dok se kod deklaracijesamo uvodi ime varijable, i smatra se da definicija dana negdje drugdje.Stoga je jasno da mora postojati točno jedna definicija. Svaka deklaracijavarijable u kojoj se varijabla i inicijalizira nužno je njena definicija. No, akoinicijalizacija nije prisutna, onda nije jasno koja je od više deklaracija istevarijable u više datoteka njena definicija.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!