If this is in a header file, you’re defining xyz
every time you #include
it.
You can change the declaration as @R Samuel Klatchko shows. The usual way (if the data isn’t const
) is like this:
In Abc.h:
extern char *xyz;
In Abc.cpp:
char *xyz = "xyz";
Edited to add
Note that header guards will not solve this problem:
#ifndef XYZ_H
#define XYZ_H
...
#endif
Header guards prevent “redefinition” errors, where the same symbol appears twice in the same compilation unit. That’s a compiler error.
But even with header guards the definition of xyz
will still appear in every source file that includes it, causing a “duplicate symbol” error, which is a linker error.
It would have been more helpful if the original poster had mentioned that, of course.