🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.unix.programmer
Article #3648

Re: #ifndef/#ifdef problems in my header file (conditional header inclusion)

#3648
From: Paul Wolf (Mac)
Date: Tue, 24 Dec 1996 00:00
42 lines
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-mail
References: <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