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++静态全局变量问题相关推荐

  1. 全局变量与静态全局变量

    1)全局变量是不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量. 2)全 ...

  2. c 全局变量多线程调用_c语言局部变量 静态局部变量 全局变量与静态全局变量...

    基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...

  3. 全局变量、静态全局变量、静态局部变量和局部变量的区别

    static和const都是C++中比较麻烦的东西,只要是太容易混淆他们的作用,之前对static做过点总结,但是不全面,还有很多小的错误,现在整理一下: 变量可以分为:全局变量.静态全局变量.静态局 ...

  4. 全局变量、局部变量、静态全局变量、静态局部变量在内存里的区别(转)

    转:http://blog.163.com/zhangkai-@126/blog/static/312636552011101510416242/ 一.程序的内存分配 一个由C/C++编译的程序占用的 ...

  5. 全局变量、局部变量、静态全局变量、静态局部变量的区别

    文章转载至全局变量.局部变量.静态全局变量.静态局部变量的区别 C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域. ...

  6. C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别

    static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 面向过程设计中的static 全 ...

  7. C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)

    1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域. 从作用域看: 1>全局变量具有全局 ...

  8. 【C语言局部变量/静态局部变量/全局变量与静态全局变量

    1基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...

  9. 四种变量的区别(局部变量,全局变量,静态局部变量,静态全局变量)

    区别: 1. 局部变量: (1)在函数体内部或者复合语句中定义的变量称为局部变量. (2)作用域为当前的函数体. (3)在栈区(动态存储区)分配. (4)函数调用时开始分配,调用结束时释放. 2. 全 ...

最新文章

  1. sql server 千万级大数据sql更新_医疗SQL每日实例6数据更新大法
  2. OllyDBG 入门系列(四)-内存断点
  3. java根据pdf模版动态生成pdf
  4. while/for 嵌套expect 批量免密码传文件
  5. 知名插画师描绘nova6“5G”潮乐园 十城nova6自拍互动装置即将引爆
  6. java 获取日期的几天前,几个月前和几年前
  7. Linux下C++ Socket编程实例
  8. 30.卷1(套接字联网API)---客户/服务器程序设计规范
  9. debian9上的openwrt创建自己的IPK软件
  10. 苹果开发者App Store绑定连连跨境支付收款教程!
  11. RAID磁盘阵列配置
  12. 隐藏计算机关机键,关机快捷键有哪些?电脑Windows快捷关机最全方法图文详解
  13. CURL 发送请求详解
  14. mysql 的 3306、33060 端口区别
  15. EI收录中国期刊目录 各个版本的含义及收录例子-12年初版
  16. h5逻辑_H5+app 混合开发
  17. GPU呈现模式分析中颜色的意义
  18. 从诸葛亮的三个锦囊妙计谈策略模式
  19. 新编计算机科学概论考试,热门计算机科学概论论文题目 计算机科学概论论文题目怎么定...
  20. Ukulele 那些花儿

热门文章

  1. centos7 yum源安装ruby27方法
  2. 了解零信任-SDP关系
  3. CentOS中使用Dockerfile部署带websocket的SpringBoot的jar包
  4. SpringBoot中整合Quartz
  5. 如何设置Flutter
  6. flutter利用高德如何获取地理位置信息bug处理
  7. 冲刺 (sprint) 评审会议
  8. android的选项菜单,Android界面菜单(2)—选项菜单
  9. linux pcl 转图片,PCL转图片工具Mgosoft PCL To Image Converter
  10. php认识正则吗,php正则表达式有什么用