Go Down

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

Udo Klein

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>


Code: [Select]

#ifndef foo
#define foo

void f();
int x = 0;


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


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

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131