Hello, [EMAIL PROTECTED] 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 with http://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 _______________________________________________ help-gplusplus mailing list help-gplusplus@gnu.org http://lists.gnu.org/mailman/listinfo/help-gplusplus