Portabel kod, ja den önskan har väl funnits i alla tider men har sällan lyckats till fullo. Problemen är alla API, gränssnitt, bibliotek m m. Sedan kan man lägga till att en standard ofta tolkas olika och/eller ofullständigt. T ex är ju många missnöjda med VC++ 6.0 i en del avseenden, ska tydligen bli bättre i nästa .net.
Problemet med #ifdef blir att koden lätt blir lite grisig. Vi har en stor applikation där det finns massa ifdefs beroende på om det är en svensk eller norsk version, detta beror på olika ritstandard i Sverige och Norge. Men alternativet med uppdelad kod är sämre för det blir omöjligt att underhålla i långa loppet.