У меня есть следующая структура и объект структуры, определенные в заголовочном файле, как показано ниже:
struct STConfigurationDetails
{
bool bAutoStart;
bool bAutoLog;
bool bAutoScan;
bool bAutoMount;
bool bAutoOpen;
bool bAutoDetectLast;
};
struct STConfigurationDetails g_objConfigurationDetails ;
В самом заголовочном файле у меня есть и метод, и тело метода, которое использует g_objConfigurationDetails. Это прекрасно работает, когда я включаю заголовочный файл в другой файл cpp и вызываю метод. Но в тот момент, когда я добавил заголовочный файл в другой файл cpp, я получил ошибку:
Ошибка 1 ошибка LNK2005: «struct STConfigurationDetails g_objConfigurationDetails» (? G_objConfigurationDetails @@ 3USTConfigurationDetails @@ A) уже определена в NDSClientDlg.obj NDSConnectDlg.obj NDSClient * 1007
Ошибка 2: фатальная ошибка LNK1169: найден один или несколько кратно определенных символов d: \ FromClearCase \ Development_view \ NDS_11152010 \ exe \ Debug \ NDSClient.exe 1 NDSClient
После поиска в нескольких потоках я обнаружил, что должен объявить свой объект как статический, и он решен. Но я хочу знать, почему я получал ошибку нескольких экземпляров при создании экземпляра только в заголовочном файле.
Это потому, что в моем заголовочном файле есть глобальная переменная, и он включен в несколько CPP?