Article View: comp.unix.programmer
Article #3648Re: #ifndef/#ifdef problems in my header file (conditional header inclusion)
From: Paul Wolf (Mac)
Date: Tue, 24 Dec 1996 00:00
Date: Tue, 24 Dec 1996 00:00
42 lines
2873 bytes
2873 bytes
If you inspect each of the system files, a unique symbol is usually #defined in each file which you can use in your own includes as follows: #ifndef SYMBOL #include <filewithsymbol.h> #endif In article <gnusenetraub-2412960039190001@dialup52.afn.org>, Mauricio Tavares <raub@kushana.aero.ufl.edu> wrote: > I am finding some very interesting behavior from #define and > #ifndef/#ifdef. Let's say that I have a header file called MyHeader.h. This > file is included by all my routines (they usually are in separate files). Now > that would not be very nice since it would include the very same include files > (stdio.h and others) over and over again. So, I thought if I use something > like > > #ifndef MOOSE > #define MOOSE > #include <stdio.h> > #include <X11/Xlib.h> > #endif > > the code would only include *one* copy of these two include files. What I am > finding out is that is not the case. Running C programs that have similar > conditional including of header files in gcc (Sparc), Think C (Mac), Borland > TC++ 3.1 for Windows (PC), and SAS/C (Amiga) results in the same thing. It > really seems that the compiler simply *forgets* what was defined in the > previous .c file and define them all over again. As a result, my object files > become unnecessarily large. Yes, the executable seems to take care of that, > but still I am using more disk space than I should. I am open for suggestions > as usual. > > -- > ===========================+======================================= > | Mauricio Tavares | "We will attack... | > | raub@kushana.aero.ufl.edu | ...under the cover of daylight!" | > | | Rimmer | > ===========================+=======================================
Technical Details
Message-ID:
<pwolf-2412961649520001@pwolf-mac.qualcomm.com>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<gnusenetraub-2412960039190001@dialup52.afn.org>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 11318c,157ed6c64d1aa006 X-Google-Attributes: gid11318c,public X-Google-Thread: 101ec9,8f16387167a7efa5 X-Google-Attributes: gid101ec9,public X-Google-Thread: 105df1,8f16387167a7efa5 X-Google-Attributes: gid105df1,public X-Google-Thread: fc89c,8f16387167a7efa5 X-Google-Attributes: gidfc89c,public X-Google-Thread: ffc26,8f16387167a7efa5 X-Google-Attributes: gidffc26,public X-Google-Thread: 1014db,8f16387167a7efa5 X-Google-Attributes: gid1014db,public From: pwolf@qualcomm.com (Paul Wolf (Mac)) Subject: Re: #ifndef/#ifdef problems in my header file (conditional header inclusion) Date: 1996/12/24 Message-ID: <pwolf-2412961649520001@pwolf-mac.qualcomm.com> X-Deja-AN: 206071664 distribution: world references: <gnusenetraub-2412960039190001@dialup52.afn.org> organization: Qualcomm, Inc. newsgroups: comp.unix.programmer,gnu.gcc.help,comp.lang.c,comp.sys.mac.programmer.help,comp.os.ms-windows.programmer.misc,comp.sys.amiga.programmer