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.

154 POGLAVLJE 9. STRUKTURA PROGRAMAKljučna riječ extern je identifikator memorijske klase koji označava da deklariranoime (ovdje f) vanjski simbol, tj. da je poznato linkeru. Budući dasu sva imena funkcija automatski poznata linkeru, extern možemo ispustiti.To znači da je deklaracijaextern void f(int);ekvivalentan svoid f(int);Ključna riječ extern kod funkcija ima stoga samo ulogu dokumentiranjaprograma. Stavit ćemo ju uvijek u prototipu funkcije koja je definirana unekoj drugoj datoteci, kako bi označili da se radi o vanjskoj funkciji.Funkcija može biti deklarirana i s identifikatorm memorijske klase static.Efekt takve deklaracije je da ime funkcije neće biti eksportirano linkeru.Takvu funkciju nije moguće pozivati iz druge datoteke. Na primjer, ako bismoželjeli onemogučiti korištenje funkcije g izvan prve datoteke, modificiralibismo prvu datoteku na sljedeći način:#include /****** Datoteka 1 *******/static int g(int);void f(int i){printf("i=%d\n",g(i));}static int g(int i) {return 2*i-1;}Sada funkciju g više ne možemo dohvatiti iz druge datoteke, pa je sljedećiprogram neispravan:extern void f(int); /****** Datoteka 2 *******/extern int g(int); /* pogresno */int main(void) {f(3); /* Ispravno */printf("g(2)=%d\n",g(2)); /* Neispravno */}jer linker ne bi pronašao funkciju g.Funkcije koje ne koristimo izvan datoteke u kojoj su definirane treba uprincipu deklarirati kao statičke kako njihova imena ne bi bila poznata učitavom programu.

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

Saved successfully!

Ooh no, something went wrong!