19.4.2 Makro virhekäsittelyn avuksi
Toisaalta usein voi tulla tilanne, jossa aliohjelman jatkaminen on kiinni
siitä, tuleeko jostakin apualiohjelmasta virhe vai ei:
...
const char *virhe;
virhe = luo_taulukko(max_koko);
if ( virhe ) return virhe;
...
Tätä käsittelyä varten ei voida helpolla tehdä
aliohjelmaa, mutta voidaan tehdä kyllä makro, jota voitaisiin kutsua:
IF_ERR_RETURN(luo_taulukko(max_koko));
Makron toteutus olisi vaikkapa seuraavanlainen:
#define IF_ERR_RETURN(v) { const char *virhe=(v); if ( virhe ) return virhe; }
- Pura auki makrokutsu IF_ERR_RETURN(luo_taulukko(max_koko));