Go Down

Topic: multiple definition of ... (Read 6 times) previous topic - next topic

Udo Klein

#15
Sep 26, 2009, 05:30 pm Last Edit: Sep 26, 2009, 05:32 pm by udoklein Reason: 1
Hmm. I tried to boil it down to the following:

Code: [Select]

#include <bar.h>
#include <foo.h>

int main(){}


Code: [Select]

#ifndef bar
#define bar

#include <foo.h>

#endif


Code: [Select]

#ifndef foo
#define foo

void f();
int x = 0;

#endif


This does compile --> I thought I understood it. Everything works but I would expect a compiler error. --> I can not reproduce the issue I was asking about. But obviously I still do not understand it.

In my understanding both foo and bar should contain a definition. Hence they should create a compiler error when I include both of them. Obviously they do not. Any hints on this? Did I understand it wrong again or is this something else I do not know?
Check out my experiments http://blog.blinkenlight.net

AlphaBeta

What happens if you try to use x in you main() ?

BTW, foo will not be included twice, because of the inclusion guard (#ifndef/#define), this is acutally its purpose.

Go Up