Windows — C ++ глобальные переменные

у меня есть заголовочный файл global.h где я объявляю несколько переменных, которые я намерен использовать в других файлах.

#ifndef GLOBAL_H_
#define GLOBAL_H_

#include <stdio.h>

typedef struct tag_KG_Data
{
int nKGStationID;
int nKGComPort;

}GLOBAL_VAR;

GLOBAL_VAR g_GlobalVar;

BOOL b_newDataReady;
BOOL b_startedSocketClient;#endif

Сначала я объявил только GLOBAL_VAR g_GlobalVar в файле test1.cpp с extern GLOBAL_VAR g_GlobalVar;и работал просто отлично. Тогда я объявил 2 BOOLи использовал их в test2.cppно я получаю error LNK2005: "struct tag_KG_Data g_GlobalVar" (?g_GlobalVar@@3Utag_KG_Data@@A) already defined in test1.obj и для каждой глобальной переменной я получаю похожую ошибку. Дело в том, что я не использую GLOBAL_VAR g_GlobalVar в test2.cpp или любой из BOOLв test1.cpp,

3

Решение

Это потому что ты определяющий глобалы в шапке, а ты должен быть только декларирование их.

добавлять extern перед вашими глобальными определениями и создайте определение в одном файле cpp.

В шапке:

// Declarations
extern GLOBAL_VAR g_GlobalVar;
extern BOOL b_newDataReady;
extern BOOL b_startedSocketClient;

В файле cpp:

// Definitions
GLOBAL_VAR g_GlobalVar;
BOOL b_newDataReady;
BOOL b_startedSocketClient;
8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]