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++静态全局变量问题相关推荐
- 全局变量与静态全局变量
1)全局变量是不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量. 2)全 ...
- c 全局变量多线程调用_c语言局部变量 静态局部变量 全局变量与静态全局变量...
基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...
- 全局变量、静态全局变量、静态局部变量和局部变量的区别
static和const都是C++中比较麻烦的东西,只要是太容易混淆他们的作用,之前对static做过点总结,但是不全面,还有很多小的错误,现在整理一下: 变量可以分为:全局变量.静态全局变量.静态局 ...
- 全局变量、局部变量、静态全局变量、静态局部变量在内存里的区别(转)
转:http://blog.163.com/zhangkai-@126/blog/static/312636552011101510416242/ 一.程序的内存分配 一个由C/C++编译的程序占用的 ...
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
文章转载至全局变量.局部变量.静态全局变量.静态局部变量的区别 C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域. ...
- C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 面向过程设计中的static 全 ...
- C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域. 从作用域看: 1>全局变量具有全局 ...
- 【C语言局部变量/静态局部变量/全局变量与静态全局变量
1基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...
- 四种变量的区别(局部变量,全局变量,静态局部变量,静态全局变量)
区别: 1. 局部变量: (1)在函数体内部或者复合语句中定义的变量称为局部变量. (2)作用域为当前的函数体. (3)在栈区(动态存储区)分配. (4)函数调用时开始分配,调用结束时释放. 2. 全 ...
最新文章
- sql server 千万级大数据sql更新_医疗SQL每日实例6数据更新大法
- OllyDBG 入门系列(四)-内存断点
- java根据pdf模版动态生成pdf
- while/for 嵌套expect 批量免密码传文件
- 知名插画师描绘nova6“5G”潮乐园 十城nova6自拍互动装置即将引爆
- java 获取日期的几天前,几个月前和几年前
- Linux下C++ Socket编程实例
- 30.卷1(套接字联网API)---客户/服务器程序设计规范
- debian9上的openwrt创建自己的IPK软件
- 苹果开发者App Store绑定连连跨境支付收款教程!
- RAID磁盘阵列配置
- 隐藏计算机关机键,关机快捷键有哪些?电脑Windows快捷关机最全方法图文详解
- CURL 发送请求详解
- mysql 的 3306、33060 端口区别
- EI收录中国期刊目录 各个版本的含义及收录例子-12年初版
- h5逻辑_H5+app 混合开发
- GPU呈现模式分析中颜色的意义
- 从诸葛亮的三个锦囊妙计谈策略模式
- 新编计算机科学概论考试,热门计算机科学概论论文题目 计算机科学概论论文题目怎么定...
- Ukulele 那些花儿