help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: The g++ preprocessor: Include Guards


From: gutmant
Subject: Re: The g++ preprocessor: Include Guards
Date: Wed, 20 Jun 2007 12:06:25 -0000
User-agent: G2/1.0

On Jun 20, 2:28 pm, Bernd Strieder <strie...@informatik.uni-kl.de>
wrote:
> Hello,
>
>  gutm...@gmail.com wrote:
> > Say you have a file, a.h with an include guard.
> > If you include it twice and look at the preprocessed output, you see
> > there's no sign for the second inclusion.
> > However, if you include it twice - once from a relative path, and once
> > from an absolute one - you see that the second inclusion indeed occurs
> > (enters the file and leaves immediately due to the include guard).
>
> > Why does this happen(I have my speculations, but I want some
> > reassurance...), and is there any way to make it always act like in
> > the latter case?
>
> AFAIK gcc has some features recognizing include guards, avoiding opening
> a guarede file a second time, and thus saving even more than the
> include guard itself. Since opening a file can be costly due to OS
> calls, this has been found an important optimization.
>
> That include guard optimization probably is based on a simple heuristic,
> which you have broken by using relative and absolute filenames.
>
> Start reading withhttp://en.wikipedia.org/wiki/Pragma_once
>
> and follow the links to gcc
>
> Or see the section "Once-Only Headers" in the docs of cpp, the C
> preprocessor.
>
> I think you can easily break the employed heuristics to reach your goal.
>
> Bernd Strieder

Thank you Bernd!
I figured as much. I still don't understand how I can make the
preprocessor NOT to employ the optimization.
I agree it is indeed and important one for most practical needs, but
as the moment I need the information that is withheld from me...
Thank you very much again,
 - Tali



reply via email to

[Prev in Thread] Current Thread [Next in Thread]