C++中,在文件中,类外,声明一个非静态变量,这个就是全局变量,它的作用域是全局的,链接时个编译单元一起
C++中,在文件中,类外,声明一个静态变量,这个就是静态全局变量,作用域是编译单元,因此同一个全局静态变量链接时不会报重复链接错误
#pragma once #include<vector> class MyClass { public: void Test(); float Testfloat(); }; std::vector<int> g_vec; //全局变量,被多个文件包含会链接错误【重复的符号】 static std::vector<int> gs_vec; //静态全局变量,被多个文件包含时,每个文件中一个实例
全局变量的正确用法:
方式一,声明中使用extern
1,头文件中声明, MyClass.h
#pragma once #include<vector> class MyClass { public: void Test(); float Testfloat(); }; extern std::vector<int> g_vec;
2,任意CPP中定义: MyClass.cpp