Sections:

All contributions in this site reflect the authors' opinions and they are not necessarily endorsed by, or reflect the beliefs of, anarchyinthetubes, as neither do most of the opinions in other sites.

/sys/doc/ Documentation archive

ifdef Considered Harmful, or Portability Experience With C News

By Henry Spencer (Zoology Computer Systems, University of Toronto) and Geoff Collyer (Software Tool & Die)

"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 only two versions are present. Unfortunately, as software using this approach is ported to more and more systems, the #ifdefs proliferate, nest, and interlock. After a while, the result is usually an unreadable, unmaintainable mess. Portability without tears requires better advance planning."

"When we wrote C News Coll87a

See also

original page
cat.4l77.com