Общий заголовок вызывает многократную ошибку определенного символа

Рассмотрим следующий пример файла заголовка: shared_example.h

#ifndef SHARED_EX
#define SHARED_EX

const int    Shared_Int     = 1;
const char * Shared_CString = "This is a string";

#endif

Файл shared_example.h включен в несколько модулей компиляции, которые приводят s компоновщик (правильно) жалуется, что:

ошибка LNK2005: «char const * const Shared_CString» (? Shared_CString @@ 3PBDB), уже определенная в First_Compilation_Unit.obj

Удаление константы Shared_CString из этого файла устраняет проблему.

Итак, у меня два вопроса.

Во-первых, почему константа Shared_Int не вызывает ту же проблему?

Во-вторых, как лучше всего разрешить отдельным единицам компиляции использовать одно и то же значение постоянной строки?

9
задан Greg 26 September 2011 в 20:15
поделиться