This nice paper from ancient times (1992) explains it well. Wading through thousands of #ifdefs is painful. It is unreadable. I don't understand why people still think after all these years that throwing in a few #defines will make the code portable? Planning, planning and planning in advance are the things needed. Damnit.
#ifdefs considered harmful
written by Christian Kellermann on 2007-11-13