previous next Up Title Contents Index

Esimerkki 2

Edellisen esimerkin makromäärittelyssä on käytetty sulkeita parametrien ja koko makron ympärillä. Tämä on tarpeen, jotta asiat suoritetaan oikeassa järjestyksessä.

Tarkastellaan tästä seuraavaa esimerkkiä:

    #define NELIO(x) x*x

Jos ohjelmaan kirjoitetaan

    y = NELIO(5); 

tästä laventuu

    y = 5*5;

mikä on aivan oikein. Mutta jos kirjoitetaan

    y = NELIO(5+1); 

tästä laventuu

    y = 5+1*5+1; 

mikä tuottaakin eri tuloksen, mitä käyttäjä haluaa.

Jos x olisi ollut makron määrittelyssä sulkeissa, tällaiseen ongelmatilanteeseen ei jouduttaisi.
Makro pitääkin määritellä muodossa:

    #define NELIO(x) ((x)*(x)) 

previous next Up Title Contents Index