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.

138 POGLAVLJE 8. PREPROCESORSKE NAREDBEProgram će ispisatiKvadrat od y je 25.Kvadrat od 2+4 je 36.Napomena. Neke su “funkcije” deklarirane u ustvari makroi,na primjer getchar i putchar. Isto tako, funkcije u uglavnom suizvedene kao makroi.Definiciju nekog imena može se poništiti pomoću #undef. Na primjer,#undef getcharU #define naredbi tekst zamjene se prostire od imena koje definiramo dokraja linije. Ako želimo da ime bude zamijenjeno s više linija teksta moramokoristiti kosu crtu (\) na kraju svakog reda osim posljednjeg. Na primjer,makro za inicijalizaciju polja možemo definirati na sljedeći način:#define INIT(polje, dim) for(int i=0; i < (dim); ++i) \(polje)[i]=0.0;Osnovna prednost parametriziranih makroa pred običnim funkcijama jeu brzini izvršavanja – makro nam štedi jedan funkcijski poziv. To može bitiznačajno ukoliko se makro poziva veliki broj puta. Prednost može biti i tošto mako ne kontrolira tip svojih argumenata. Tako npr. makro kvadrat(x)možemo koristiti s x bilo kojeg skalarnog tipa. S druge strane osnovni jenedostatak što prevodilac ne može provjeriti korektnost poziva makroa zavrijeme prevodenja. U tom smislu je inline funkcija bolje rješenje.Generalna je konvencija da se parametrizirani makroi pišu velikim slovima.8.4 Uvjetno uključivanjePomoću preprocesorskih naredbi #if, #else, #elif možemo uvjetno uključivatiili isključivati pojedine dijelove programa. Naredba #if ima sljedećioblik:#if uvjetblok naredbi#endifUkoliko je uvjet ispunjen blok naredbi izmedu #if uvjet i #endif bit ćeuključen u izvorni kôd; ako uvjet nije ispunjen blok neće biti uključen.

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

Saved successfully!

Ooh no, something went wrong!