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.

142 POGLAVLJE 8. PREPROCESORSKE NAREDBE8.6 assertMnoge funkcije očekuju da će dobiti argumente koji zadovoljavaju odredeneuvjete. Na primjer, funkcija koja prima jedan argument tipa double možeočekivati samo pozitivne vrijednosti. Predaja negativne vrijednosti vrlo čestisignalizira da se desila greška u izvršavanju programa. U takvim situacijamaželjeli bismo provjeriti na početku izvršavanja funkcije jesu li uvjeti koje argumentimoraju zadovoljavati ispunjeni. Budući da takvih provjera možebiti jako puno u većim programima namjera nam je isključiti sve te provjereu konačnoj verziji kôda. Tu nam ponovo može pomoći tehnika s #ifdefDEBUG, no ANSI-C nam nudi bolju opciju, a to je makro assert.Da bismo iskoristili makro assert trebamo uključiti standardnu datotekuzaglavlja . Zatim se assert koristi kao da se radi o funkciji oblikavoid assert(int izraz)Ako je izraz jednak nuli u trenutku kada se izvršava naredbaassert(izraz);assert će ispisati porukuAssertion failed: izraz,file ime_datoteke, line br_linijegdje je ime datoteke ime datoteke u kojoj se naredba nalazi i br linije brojlinije u kojoj se naredba nalazi. Nakon toga assert zaustavlja izvršavanjeprograma. Na primjer,#include #include #include int f(int x){assert(2*x-1 >= 0);return sqrt(2*x-1);}int main(void){int x=-1;printf("x=%d\n",f(x));return 0;}

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

Saved successfully!

Ooh no, something went wrong!