www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/05/27/02:41:19

From: "Willem Duminy" <wduminy AT bigfoot DOT com>
Subject: Re: and another thing...
Newsgroups: comp.os.msdos.djgpp
References: <Pine DOT SUN DOT 3 DOT 96 DOT 990526115225 DOT 18233A-100000 AT silver DOT cs DOT umanitoba DOT ca>
Message-ID: <01bea807$27526020$d7cb1fac@wduminy.mck.co.za>
X-Newsreader: Microsoft Internet News 4.70.1155
NNTP-Posting-Host: s160-2.mck.co.za
Date: 27 May 1999 08:07:16 +0200
X-Trace: 27 May 1999 08:07:16 +0200, s160-2.mck.co.za
Lines: 67
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Make foo extern in header.h and  define it in h.cc
See below.
The problem is that two modules includes your header, and both define foo. 
The directives ensures that you cannot include the same source more than
once pre module.  It has no affect during the linking process.

****************
email: wduminy AT bigfoot DOT com
web:  http://www.bigfoot.com/~wduminy
***************

Mark Phillips <umphill5 AT cs DOT umanitoba DOT ca> wrote in article
<Pine DOT SUN DOT 3 DOT 96 DOT 990526115225 DOT 18233A-100000 AT silver DOT cs DOT umanitoba DOT ca>...
> 
> Why should I get this:
> 
> Compiling: h.cc
> no errors
> Compiling: main.cc
> no errors
> Creating: test.exe
> Error: main.o(.data+0x0):main.cc: multiple definition of 'foo'
> Error: h.o(.data+0x0):h.cc first defined here
> 
> When I do this:
> 
> // file #1 main.cc
> #include "header.h"
> 
> int main()
> {
>    fun1();
>    return 0;
> }
> 
> // file #2 h.cc
> #include "header.h"
< W
bool foo;
< W
> 
> void fun1()
> {
>    foo = 1;
> }
> 
> // file #3 header.h
> #ifndef HEADER_H
> #define HEADER_H
> 
> void fun1();
> bool foo;
< W
exterm bool foo;
< W
> 
> #endif
> 
> 
> Shouldn't the preprocessor directives in 'header.h' handle the multiple
> declaration linking errors?
> 
> 
> love
> mark
> 
> 

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019