Subject: Re: CVS commit: src/sys/sys
To: Dave Sainty <dave@dtsp.co.nz>
From: Steven J. Dovich <dovich@tiac.net>
List: source-changes
Date: 01/04/2004 01:25:08
Dave Sainty wrote:
> "Steven J. Dovich" writes:
> > And that coddles the lazy at the expense of compile time. Consider
> > the lexing costs for all the redundant including of required headers
> > which have already been included. That can amount to a measurable
> > difference in compile time, particularly when extended across the
> > entire NetBSD source tree.
> 
> From the GNU cpp(1) info node:  "Once-Only Include Files"
> -----------------------""""""
> 
>    The GNU C preprocessor is programmed to notice when a header file
> uses this particular construct and handle it efficiently.  If a header
> file is contained entirely in a `#ifndef' conditional, then it records
> that fact.  If a subsequent `#include' specifies the same file, and the
> macro in the `#ifndef' is already defined, then the file is entirely
> skipped, without even reading it.

I guess I knew that. But it isn't exactly portable behavior, now
is it?  The fact that GCC tries to detect a sub-optimal coding
practice does not make it suddenly palatable.  Is it better
engineering to use portable constructs and behavior, or to further
extend ones dependence on a particular implementation of otherwise
standard technology, ie. should we add a few more pounds to the 5
pound sack of GNUisms we are already carrying.

/sjd