在两个cpp文件之间共享头文件中定义的全局变量
Sharing a defined global variable in a header amongst two cpp files
我对能够在两个cpp文件之间共享已定义的全局变量很感兴趣。以下是可能的吗?我对此感兴趣是为了避免多次初始化全局共享变量。我有麻烦,能够建立这个代码。在这种情况下,您建议如何声明/定义myMap ?
MapHeader.h
#ifndef _MAP_HEADER_
#define _MAP_HEADER_
#include <string>
#include <map>
using namespace std;
extern const map<int, string> myMap = {{100 , "one hundred"}, {200,"two hundred"}, {300,"three hundred"}};
#endif // _MAP_HEADER_
FirstFile.h
#ifndef _FIRST_FILE_
#define _FIRST_FILE_
#include "MapHeader.h"
#include <iostream>
#include <string>
using namespace std;
void myFunction1();
#endif
FirstFile.cpp
#include "FirstFile.h"
void myFunction1(){
cout << "myFunction1()" << myMap[100] << endl;
}
SecondFile.h
#ifndef _SECOND_FILE_
#define _SECOND_FILE_
#include "MapHeader.h"
#include <iostream>
#include <string>
using namespace std;
void myFunction2();
#endif
SecondFile.cpp
#include "SecondFile.h"
void myFunction2(){
cout << "myFunction2()" << myMap[200] << endl;
}
Main.cpp
#include "FirstFile.h"
#include "SecondFile.h"
int main()
{
myFunction1();
myFunction2();
return 0;
}
我得到错误信息:
错误:通过"const std:: map<>","这个"std: map<的论点 ;>' .....
在MapHeader.h中,将您的定义更改为extern map myMap;然后将你的定义完全像在MapHeader.h中一样移动到。cpp的
相关文章:
- 在QTreeView中仅显示共享驱动器和文件夹
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 用于构建 cuda .so 文件(共享库)的生成文件
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- Linux 可执行文件通过 dlopen 在emplace_back崩溃打开共享库
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
- C :与多个文件共享变量
- C++跨文件共享的模板专用化定义
- 与从C++到C#的内存映射文件共享链式结构
- Dokan:我应该自己处理文件共享和访问权限吗?
- 如何在 libjingle 中编译 PCP 文件共享
- Linux 中的 C 到 C# (Mono) 内存映射文件/共享内存
- 由2个文件共享的C++变量
- 跨多个.cpp文件共享全局变量(visual studio 2015)
- 初始化两个不同应用程序的cpp文件共享的headerfile中的数组结构
- 为什么跨多个文件共享时不需要用"extern"装饰"const char *"
- c++全局指针被不同的文件共享
- 配置文件共享对象,无需重新编译主程序