在两个cpp文件之间共享头文件中定义的全局变量

Sharing a defined global variable in a header amongst two cpp files

本文关键字:文件 共享 定义 全局变量 之间 两个 cpp      更新时间:2023-10-16

我对能够在两个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&lt的论点 ;>' .....

在MapHeader.h中,将您的定义更改为extern map myMap;然后将你的定义完全像在MapHeader.h中一样移动到。cpp的