12.07.2015 Views

Programski jezik C - Pmf

Programski jezik C - Pmf

Programski jezik C - Pmf

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

136 POGLAVLJE 8. PREPROCESORSKE NAREDBEno u naredbi printf("PI"); do zamjene ne bi došlo. Svako ime definiranou nekoj #define naredbi nazivamo makro.Naredba #define može se koristiti i bez teksta zamjene kao#define imeNakon te naredbe ime je definirano, što se može ispitivati pomoću #if naredbe.Ako je neko ime definirano pomoću #define, definicija se možeponištiti pomoću naredbe #undef (vidi sekciju 8.4).8.3 Parametrizirana #define naredbaNaredba #define osim za definiranje simboličkih konstanti služi i za definiranjeparametriziranih makroa.U parametriziranoj #define naredbi simboličko ime i tekst koji zamijenjujesimboličko ime sadrže argumente koji se prilikom poziva makroa zamijenjujustvarnim argumentima. Sintaksa je sljedeća:#defineime(argumenti) text_zamjeneJedan primjer parametriziranog makroa je#definemax(A,B) ((A)>(B) ? (A) : (B))gdje su A i B argumenti. Ako se u kodu pojavi naredbax=max(a1,a2);preprocesor će ju zamijeniti sx=((a1)>(a2) ? (a1) : (a2));Formalni argumenti (parametri) A i B zamijenjeni su sa stvarnim argumentimaa1 i a2. Ako pak na drugom mjestu imamo naredbux=max(a1+a2,a1-a2);ona će biti zamijenjena sx=((a1+a2)>(a1-a2) ? (a1+a2) : (a1-a2));Vidimo da je parametrizirani makro vrlo sličan funkciji no u njemu nemafunkcijskog poziva i prenošenja argumenata, pa je stoga efikasniji.Sličnost makroa i funkcije može zavarati. Ako bismo makro max pozvalina sljedeći način

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

Saved successfully!

Ooh no, something went wrong!