C++ 全局变量的跨文件使用

2023-05-16

文章目录

  • 前言
  • 一、extern的使用
  • 二、容易犯的错误


前言

在写C++工程文件的时候,往往会用到一些所有类都使用的数据,比如数据文件等,一种写法是写成静态类,调用数据时使用类名加属性名的形式,另一种时写成全局变量的形式。

C++工程组织结构是按照xx.h文件中写函数/类的声明,xx.cpp文件中写函数的定义,所以对于全局变量而言,比较合适的写法是为这些全局变量专门建立一个文件对。


一、extern的使用

全局变量在工程中往往是跨文件使用的,比如在a.h中定义的变量要在b.cpp,c.cpp文件中使用。

//a.h
using namespace std;
extern int num_a;
//b.cpp
#include "a.h"
void print(){
	cout<<num_a<<endl;
}

如果此时在全局变量num_a声明的时候没有添加修饰词extern则不能跨文件调用。

二、容易犯的错误

在使用全局变量前,要注意满足 “先声明,后定义,再使用”的原则,即在a.h中声明了num_a变量,需要在a.cpp文件中赋值/定义。定义时不需要再写extern,但仍需写int。(事实上在其他任何一个cpp文件中定义都可以,不过最好在同名的文件中方面debug)。

//a.cpp
#include "a.h"
int num_a=10;

常见的错误
错误1:未在cpp中定义就直接使用。这种通常会报错为 “”找不到xx变量“
错误2:直接在a.h中定义,即

using namespace std;
extern int num_a=10;

如果仅有一个cpp文件include了a.h可能不会报错,当有多个cpp文件include这个头文件,则会报 “变量重复定义”的错误。
需要区分的是,当变量定义在类内时,是可以直接赋值的。例如:

using namespace std;
class test{
private:
	int num_a=10;
public:
	test();
}
```


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 全局变量的跨文件使用 的相关文章

  • 三孔插座接线方法(上地,左零,右火)

    三孔插座接线方法 一般三孔插座的线序 xff0c 如下图所示 xff1a 上 xff1a 地线 xff08 保护地 xff09 左 xff1a 零线 右 xff1a 火线 xff08 相线 xff09 正确的接接线方法 错误的接线方法 xf
  • CAN总线详解

    CAN总线协议 要了解报文数据帧的直接看第三点 1 CAN简介 CAN controller area network 控制器局域网是用于解决汽车众多控制部件之间的数据交换而开发的一种串行数据通信总线 其特点有 xff1a 总线上节点不分主
  • 【FreeRTOS】2. SVC系统调用

    SVC系统调用 问题 xff1a RTOS内核在何时去产生一个SVC系统调用 xff1f SVC中断服务里面使用的是MSP堆栈指针 xff0c 内核在何时切换为PSP指针 xff1f 1 产生SVC系统调用 FreeRTOS启动调度器的时候
  • 【FreeRTOS】3. PendSV异常

    PendSV异常 问题 xff1a 怎么触发PendSV异常 xff1f 何时使用MSP何时切换PSP xff1f PendSV如何实现上下文切换 xff1f 1 触发PendSV异常 在RTOS内核中 xff0c 任务切换的原理是 xff
  • PID控制器的介绍

    PID 控制算法介绍 在工程实际中 xff0c 应用最为广泛的调节器控制规律为比例 积分 微分控制 xff0c 简称 PID 控制 xff0c 又称 PID 调节 PID 控制器问世至今已有近 70 年历史 xff0c 它以其结构简单 稳定
  • 【智能车】图像二值化算法--大津法OTSU

    图像二值化算法 大津法OTSU 大津算法是一种图像二值化算法 xff0c 作用是确定将图像分成黑白两个部分的阈值 大津法是针对灰度值进行阈值分割二值化 xff0c 如果是彩色图像的话需要先转化成灰度图再进行计算 方差越大 xff0c 相关性
  • 【Linux学习笔记】9. Linux打包压缩解压缩命令tar

    LInux打包命令tar 一般形式 xff1a span class token function tar span cvf xxx tar dir span class token comment 将 dir 目录打包到 xxx tar
  • 0.96OLED 4针IIC STM32-HAL库版本(附源码)

    0 96OLED 4针IIC STM32HAL库版本 OLED源码放在文章末 xff0c 有需要自己下滑取用即可 关于如何移植到自己定义的引脚上也做了说明 另外 xff0c 本人在代码中封装了一个OLED显示的接口 xff0c 方便开发者对
  • 【智能车】模糊PID控制原理详解与代码实现

    模糊PID控制 本文主要由三部分构成 xff1a 模糊PID控制器的原理 xff0c 模糊PID控制器C 43 43 的实现与测试 一 模糊PID原理 模糊PID控制流程如下图所示 xff0c 把目标值 Xtarget 与输出值 Xout
  • ubnutu: 编译libtorch有关的代码时opencv报错-undefined reference to `TIFF**********@LIBTIFF_4.0‘

    报错如下 xff1a 25 Linking CXX executable yolov4 usr local lib libopencv world so 3 4 10 undefined reference to 96 TIFFReadDi
  • 【Linux环境配置】6. 解决uboot无法ping通Ubuntu虚拟机

    开发环境 使用的板子为正点原子的Alpha Mini板 xff0c 教材为正点原子配套的驱动开发指南v1 6 问题 启动uboot后到学习网络命令时 xff0c 始终无法ping通服务器主机 其中 xff0c serverip ipaddr
  • 【Linux环境配置】7. Linux部署code-server

    安装 code server 两种方法 xff0c 一种是在线安装 xff0c 另一种是本地安装 因为主机访问github可能会报443错误 xff0c 因此这里我推荐使用本地安装方法 xff01 本地安装方法 进入github xff0c
  • 0.96OLED 4针IIC STM32-标准库版本(附源码)

    0 96OLED 4针IIC STM32标准库版本 在前面已经介绍过 xff0c 这里就不多说了 xff0c 详情请见 xff1a 0 96OLED 4针IIC STM32HAL库版本 另外 xff0c 本人在代码中封装了一个OLED显示的
  • 推荐系统论文重要的三个指标——Recall、NDCG、RMSE

    1 Recall Recall xff08 召回率 xff09 大小反应了用户感兴趣的信息有多少被我们感知到了 xff1b R e c a l l
  • 手机飞行模式这么厉害!现在才知道,每天都能用到

    手机飞行模式是大家经常使用的功能 xff0c 除了屏蔽信号以外 xff0c 这5点功能你都知道吗 xff0c 下面一起来看看 1 超级省电 当我们遇到手机没电的时候 xff0c 手机后台还会运行大量的应用非常耗电 这时打开手机 飞行模式 x
  • 使用RESTful 风格+SqlSugar+SqlServer+异步方式创建.NET Core WebApi项目

    所用技术以及框架如下 NET框架 NET Core WebApi RESTful 风格 ORM框架 SqlSugar 测试WebApi接口方式 postman或Swagger 这里使用Swagger 如果需要postman使用教程 后面有时
  • 自行车平衡原理

    转载自 xff1a http nicekwell net blog 20180118 zi xing che ping heng yuan li html 本人是一名16届智能车比赛单车组的备赛学生 xff0c 竞速组选择的是单车拉力组 x
  • 树莓派4B VNC显示不完全,最大化无效问题

    用SSH连接树莓派 xff0c 进入配置界面 选择 interface options xff0c 然后再选 VNC xff0c 选择 yes xff0c 选择 ok xff0c 最后选择 finish 完成操作后就开启了VNC的权限 这时
  • 集群崩溃的一些故障原因

    今天 xff0c 集群又崩了 前几天 xff0c 用的集群是HBASE数据库 然后 xff0c 今天崩的是oracle数据库 两个都崩了 问题描述 xff1a 服务器直接宕机 xff0c 然后自动切换到备份 xff1b 然后备份宕机 xff
  • Carsim应用:LKA车道保持辅助系统(LQR算法推导)

    网上课程学习所得 xff0c 用于回忆复习加深印象 车辆横向控制主要有两类 xff1a 一是主动变道 xff0c 是指根据行驶需要提前打转向灯再进行变道 xff1b 二是非主动变道 xff0c 是指驾驶员无意识的情况下出现的车辆偏离原车道的

随机推荐