C++静态全局变量问题
生活随笔
收集整理的這篇文章主要介紹了
C++静态全局变量问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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
#include <vector> //#include "myheader.h"std::vector<int> g_vec;3,#include"MyClass.h"后使用
#include "MyClass.h"int main() {g_vec.push_back(10); }?
方式二,使用時用extern
?
1,頭文件中聲明, MyClass.h
#pragma once #include<vector>class MyClass { public:void Test();float Testfloat(); };std::vector<int> g_vec;2, extern? 后使用,不需要#include"MyClass.h"
extern std::vector<int> g_vec; int main() { g_vec.push_back(10); }?
總結
以上是生活随笔為你收集整理的C++静态全局变量问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVN 提交子文件夹问题
- 下一篇: s3c2440移植MQTT