Избавьтесь от extern
и все готово.
Этот код прекрасно работает в заголовке, потому что все является "действительно постоянным" и поэтому имеет внутреннюю связь:
const int BEGINNING_HEALTH = 10;
const int BEGINNING_MANA = 5;
const char BEGINNING_NAME[] = "Fred";
const char *const BEGINNING_NAME2 = "Barney";
Этот код нельзя безопасно поместить в заголовочный файл, поскольку каждая строка имеет внешнюю связь (либо явно, либо из-за того, что она не является действительно постоянной):
extern const int BEGINNING_HEALTH = 10;
extern const int BEGINNING_MANA = 5;
const char *BEGINNING_NAME = "Wilma"; // the characters are const, but the pointer isn't