Aaron, Eljay was leading you in the right direction. It looks like the problem is not due to including the header file in multiple locations so much as it is due to you defining variables in the header files, rather than merely declaring them. Any variables should be _defined_ in the source modules (the .c or .cpp files), and you should be _declared_ in the header files using "extern" statements to indicate to the compiler not to allocate space for the variables in each object module, since it's defined in another "external" object module that will be linked in later. If you simply state something like "int x" in a header file, the compiler will allocate space for that variable in any file that includes it, which will give you duplicate symbol errors when the program is linked. The key is that you only want the space for the symbol to be allocated in a single object module and for any others that use that symbol to simply reference it. Does that make sense? Thanks, Lyle Taylor IS Applications -----Original Message----- From: Aaron Case [mailto:aaron.case@xxxxxxxxxxxx] Sent: Monday, September 15, 2003 3:34 PM To: lrtaylor Subject: RE: multiple inclusion of header files across Hi Lyle, Sorry for the ambiguity. The main goal to get rid of errors I firmly believe are from multiple inclusions of header files. I have several c source code files that all use many of the same header files. This is not a problem when compiling 1 object/c-source file(using ifndef, etc). The problem comes when I try to link multiple objects of which have been compiled with many of the same header files. I get errors from the linker as such... XYZTASK.o(.bss.alarm_sefetxyz_obj+0x0): first defined here ALARMS.o(.bss.alarm_peerENDR_obj+0x0): multiple definition of `alarm_peerENDR_obj' XYZTASK.o(.bss.alarm_peerENDR_obj+0x0): first defined here ALARMS.o(.bss.alarm_sefetpeer_obj+0x0): multiple definition of `alarm_sefetpeer_obj' XYZTASK.o(.bss.alarm_sefetpeer_obj+0x0): first defined here ALARMS.o(.bss.alarm_sefetprinter0_obj+0x0): multiple definition of `alarm_sefetprinter0_obj' XYZTASK.o(.bss.alarm_sefetprinter0_obj+0x0): first defined here ALARMS.o(.bss.alarm_sefetprinter1_obj+0x0): multiple definition of `alarm_sefetprinter1_obj' XYZTASK.o(.bss.alarm_sefetprinter1_obj+0x0): first defined here ALARMS.o(.bss.alarm_sefetprinter2_obj+0x0): multiple definition of `alarm_sefetprinter2_obj' XYZTASK.o(.bss.alarm_sefetprinter2_obj+0x0): first defined here ALARMS.o(.bss.alarm_sefetprinter3_obj+0x0): multiple definition of `alarm_sefetprinter3_obj' This above is output of the linker(ld) when trying to link two objects that were compiled(gcc) using the same header files. The linker fails when each object has a copy of the same data from the same header file. thanks in advance. Aaron Case -----Original Message----- From: lrtaylor@xxxxxxxxxx [mailto:lrtaylor@xxxxxxxxxx] Sent: Monday, September 15, 2003 5:16 PM To: aaron.case@xxxxxxxxxxxx; gcc-help@xxxxxxxxxxx Subject: RE: multiple inclusion of header files accross Aaron, Are you experiencing problems that you believe is due to these multiple inclusions, or what is your main goal here that is driving you to get the number of inclusions down? Thanks, Lyle Taylor IS Applications -----Original Message----- From: Aaron Case [mailto:aaron.case@xxxxxxxxxxxx] Sent: Monday, September 15, 2003 1:12 PM To: gcc-help@xxxxxxxxxxx Subject: multiple inclusion of header files accross Hello, Is there a ld switch to address the problem of multiple inclusion of header files accross object files. I have used #ifndef and #define to prevent multiple inclusion within an object file successfully. Or should this be address in the makefile? The current structure of the makefile compiles several objects and then links the objects together but, but some header files are included in almost all the source files used to make each object. Or should this be addressed by reorganizing my header files and throwing in a few extern keywords? Thanks in advance? Aaron Case