c++全局变量
c++ global variables
我有一个头文件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
起初,我用extern GLOBAL_VAR g_GlobalVar;
在文件test1.cpp
中只声明了GLOBAL_VAR g_GlobalVar
,并且工作得很好。然后我声明了2个BOOL
s,并在test2.cpp
中使用它们,但我得到了一个error LNK2005: "struct tag_KG_Data g_GlobalVar" (?g_GlobalVar@@3Utag_KG_Data@@A) already defined in test1.obj
,对于我拥有的每个全局变量,我都会得到类似的错误。问题是,我在test2.cpp
中没有使用GLOBAL_VAR g_GlobalVar
,也没有在test1.cpp
中使用任何BOOL
。
这是因为在标头中定义全局变量,而您应该只声明它们。
在全局定义前面添加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;
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- C ++程序如何返回我的数组或写入全局变量
- 为什么我的数组值与此处的全局变量不匹配?
- QT C++中对全局变量的未定义引用
- 跨多个类的全局变量而不会出现重定义错误?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++线程不检测全局变量更改
- 在 elf 文件中查找全局变量的位置
- 包括一个类来定义全局变量参数 c++ :(