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))