总感觉自己c++基础知识很差。最近看代码看到全局变量。
我是这么想的。
我定义一个global.h
里面有一个int a=10;
某个cc文件想用这个全局配置,就include globa.h 就行么。
额,报错 multiple definition。
那么怎么办呢?
方案一 使用extern
具体来说
//global.h 里面
extern int myGlobalVar; // 声明全局变量
//global.cc 里面
int myGlobalVar = 43; // 定义并初始化全局变量
使用的时候
#include <iostream>
#include "globals.h"
int main() {
//myGlobalVar=15;
std::cout << "Global variable value: " << myGlobalVar << std::endl;
// 可以在这里读取或修改全局变量
return 0;
}
方案二 使用struct 包装一下
你不会只有一个参数的
//global.h 里面
struct GlobalConfigx{
int a;
int b;
std::string name;
};
extern struct GlobalConfigx configx;
//global.cc 里面
// 初始化 方法一
struct GlobalConfigx configx={
2,
3,
"zhangshan"
};
// 初始化 方法二
GlobalConfigx get_default_config() {
GlobalConfigx cfg;
cfg.a= 10;
cfg.b= 200;
cfg.name= "my_service";
return cfg;
}
GlobalConfigx configx = get_default_config();
使用的时候 直接configx.name 就可以了。