ratzip ratzip - 26 days ago 7
C++ Question

undefined reference for the extern variable in C++ header

I have some code in C++:

// A.h
extern const char *names[3];

// B.cpp
#include "A.h"
const char *names[3] = {

"Name1",
"Name2"
"Name3"
};

void getName()
{
char *name;
strncpy(name, names[0], 5);
};

// C.cpp
#include "A.h"


Then when I build it, it generate the following error:

undefined reference to `names'
What is the reason and how to fix it?

Answer

You have some errors in the example, you provided, I assume you do not just copy/paste the source. Like the semicolon in line const char *names[3]; = {, or the missing comma in the list of strings next to "Name2"

So about your question. You should not include the A.h in you B.cpp, I mean the line #include "A.h" should be removed. You include the header file, and use the extern keyword only where you will use the *names pointer in other cpp files.

Comments