Avoiding Double Header Includes

Ian Lance Taylor iant@google.com
Wed Sep 8 01:03:00 GMT 2010


Tom Browder <tom.browder@gmail.com> writes:

> The cpp manual states:
>
> <quote>
> CPP optimizes even further.  It remembers when a header file has a
> wrapper `#ifndef'.  If a subsequent `#include' specifies that header,
> and the macro in the `#ifndef' is still defined, it does not bother to
> rescan the file at all.
> </quote>
>
> Does that mean (1) the file is reopened but not scanned,  or (2) does
> it mean the file is not even opened?  It seems that (1) is probably
> the correct answer, but I'm looking for confirmation.

I believe that the file is not even opened.

> It makes a slight difference efficiency-wise, and there is a cpp
> "#pragma once" that will definitely avoid reopening the header after
> the first time it's read.

#pragma once is considered to be obsolete, because the default behaviour
is simpler.

Ian



More information about the Gcc-help mailing list