Ryan Tuck Ryan Tuck - 1 year ago 130
C++ Question

XCode: duplicate symbol error when using global variable

Here's my code:


class Foo
int bar;

Foo myFoo;


#include "A.h"
int main()
myFoo.bar = 2;
return 0;

Xcode gives me the error (paraphrased):

duplicate symbol _myFoo in main.o & A.o

I'd like to keep the
Foo myFoo
within the A.h file.

So why is XCode throwing this error and how can I rectify it?

Answer Source

You define the global variable in header and it breaks the one definition rule.
Each TU where you include the header will have its own copy of the object.

You need to use extern keyword:

  1. Declare the object as extern in header.
  2. Define it one and only one source file.
  3. Include the header wherever you want to use the global variable


extern Foo myFoo;


#include "A.h"

Foo myFoo;


#include "A.h"
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download