#ifdef Considered Harmful, or Portability Experience With C News

Henry Spencer, Geoff Collyer · 1992

We believe that a C programmer's impulse to use #ifdef in an attempt at portability is usually a mistake. Portability is generally the result of advance planning rather than trench warfare involving #ifdef. In the course of developing C News on different systems, we evolved various tactics for dealing with differences among systems without producing a welter of #ifdefs at points of difference. We discuss the alternatives to, and occasional proper use of, #ifdef. Introduction With UNIX running on many different computers, vaguely UNIX-like systems running on still more, and C running on practically everything, many people are suddenly finding it necessary to port C software from one machine to another. When differences among systems cause trouble, the usual first impulse is to write two different versions of the code---one per system---and use #ifdef to choose the appropriate one. This is usually a mistake. Simple use of #ifdef works acceptably well when differences are localized and o...

Read the paper · More papers on PaperTik