C++ 全局变量定义在哪里合适
最近审核代码发现,有些刚入门的同学在头文件中定义了全局变量,链接报错重定义。
一般来讲,全局变量一定要定义在.c文件中,比如int g_int=0;,然后头文件extern int g_int,老司机差不多都这样写,这样某个地方(其它源文件)中需要用到该全局变量就把这个头文件包含进去,或者在其它源文件中直接extern int g_int,可千万不要将全局变量定义在头文件中,如果定义在头文件中,包含了这个头文件的文件都会在预处理的时候展开这个头文件,相当于在这里又定义了一个int g_int=0;链接的时候就会出错。
另外,在一些编译器中会提示你加static,当你在头文件中定义全局变量的时候,加了static的全局变量表示只在该源文件中有效,不管是.h还是.c,所以你某个源文件中能编译通过,在使用的时候发现,这个全局变量地址怎么不一样,这就是因为加了static的缘故,相当于你在两个原文件中分别定义了static的同名变量,因为static修饰作用,不会重名报错,但是很有可能跟你初始想法就不一样了。
所以最后记得千万不要在头文件中定义全局变量,而要在.c文件中定义,如果全局变量特别多,上百个,可以专门用一个头文件来引入这些全局变量,也就是一个头文件专门:
extern int g_int=0;
extern float g_float=0.0f;
.........
然后在用的地方直接导入该头文件就可以了,不用在每个用的地方专再重复extern了。
大致就这些了,水平有限,如有错误,请斧正。
C++ 全局变量定义在哪里合适相关推荐
- 【C++】全局变量定义在哪里合适
最近审核代码发现,有些刚入门的同学在头文件中定义了全局变量,链接报错重定义. 一般来讲,全局变量一定要定义在.c文件中,比如int g_int=0;,然后头文件extern int g_int,老司机 ...
- C++中为什么不能将全局变量定义在头文件中?
一.什么是全局变量? C++中全局变量一般指定义在函数体外的变量. 全局变量按可访问性可分为外部变量和内部变量. 二.内部变量和外部变量的定义 内部变量:使用了static关键字修饰的全局变量.它的可 ...
- C语言开发单片机如何避免全局变量过多混乱
每个攻城狮的成长经历,目标总是相似的. 刚开始学习这门技术的时候,希望自己能独立做出各种各样智能的产品. 有了这能力,更有竞争力,也更挣钱,在越来越智能的时代不至于被抛弃. 可惜并不是每个人都能走到终 ...
- zts在c语言中的意思,C语言入门-全局变量 - osc_wna7tzts的个人空间 - OSCHINA - 中文开源技术交流社区...
一.全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数无关,在任何函数内部都可以使用它们 #include int f(void); // 全局变量 int g ...
- c 全局变量多线程调用_c语言局部变量 静态局部变量 全局变量与静态全局变量...
基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...
- python变量进阶(可变不可变,局部变量和全局变量)
变量进阶(理解) 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引 ...
- 全局变量-全局变量定义的位置及代码结构
# 注意:在开发时,应该把模块中的所有全局变量 # 定义在所有函数上方,就可以保证所有的函数 # 都能够正常的访问到每一个全局变量了 num = 10 # 再定义一个全局变量 title = &quo ...
- open函数和errno全局变量
(1)open函数 man man 查看man文档的首页 其中DESCRIPTION部分描述了man文档的每一章的章节内容 第2章System calls为系统调用,即Liunx系统函数. ma ...
- C语言进阶——全局变量
全局变量 ·定义在函数外面的变量是全局变量 ·全局变量具有全局的生存期和作用域 ·它们与任何函数都无关 ·在任何函数内部都可以使用它们 全局变量初始化 ·没有做初始化的全局变量会得到0值 ·指针会得到 ...
最新文章
- CMFCTabCtrl的使用
- Git多个commit合并成一个【中间提交合并 尾部提交合并】
- POJ - 1091 跳蚤(容斥原理+数论)
- 机器学习:算法模型:决策树
- Chrome、Edge 合力围剿,Safari 夹缝求生?
- 谈谈双亲委派模型的第四次破坏-模块化
- 如何优雅的处理异常(java)
- java小程序实例大全_12个用Java编写基础小程序经典案例(收藏)
- linux下对IP地址的转发和端口的伪装----利用iptables部署
- 【手把手教你】使用qstock实现量化策略选股
- 从头到尾彻底解析Hash 表算法
- php ua解析,UA识别有什么用?
- mysql三表关联查询
- 漏洞检测:异常页面导致服务器路径泄漏 WASC Threat Classification
- CAD输入坐标的方式有哪些?
- 随机森林特征重要性度量
- C语言--自定义字符串输入/输出函数
- 恋恋不忘Day 1-1
- 人工智能 Java 坦克机器人系列: 遗传算法
- 《逻辑学》模拟试题及答案
热门文章
- 生日快乐页面_《神武4》电脑版十周年新内容生日快乐上线,福利活动不错过...
- QML键盘事件之Enter键无响应解决方法
- 实例解析C++多线程并发---异步编程
- php网站目录结构图,thinkphp项目目录结构详解
- rqn 144 伯虎点秋香(字符串处理)
- 计算机教室的开场白,信息技术课的开头
- 数据分析思维笔记(基础)
- vue脚手架创建项目基本流程
- 怎样设置计算机访问数量,win10热点设置连接数量设置想相关方法
- oppo r11 android版本,oppo r11 plus有哪些版本_oppo r11 plus内存多大-太平洋IT百科