C/C++ 跨文件共享全局变量

news2024/9/24 11:22:07

目录

效果

项目

代码 

下载


为了实现跨文件共享全局变量,我们可以使用 extern 关键字。extern 关键字用于声明一个变量,该变量在其他地方已经定义。它告诉编译器这个变量在其他文件中已经定义了,不需要重新分配内存空间,只需要引用即可。

效果

项目

代码 

Common.h

#pragma once

#include <iostream>

using namespace std;

struct para {

	bool  state;
	int   num;
	string name;
};

//声明全局变量
extern  para  g_static_para;

Common.cpp

#pragma once
#include "Common.h"

//定义全局变量
para  g_static_para;

init_class.h

#pragma once

#include <iostream>
#include "Common.h"

using namespace std;

class init_class
{

public:

	void init();

};

init_class.cpp

#include "init_class.h"
#include "Common.h"


void init_class::init()
{
	cout << "参数初始化 全局变量 g_static_para" << endl;
	g_static_para.state = true;
	g_static_para.num = 20;
	g_static_para.name = "测试信息2";
}

use_class.h

#pragma once

#include <iostream>
#include "Common.h"

using namespace std;

class use_class
{

public:

	void print();

};

use_class.cpp

#include "use_class.h"

void use_class::print() {

	cout << "打印参数 全局变量 g_static_para" << endl;
	cout << "g_static_para.state:" << g_static_para.state << endl;
	cout << "g_static_para.num:" << g_static_para.num << endl;
	cout << "g_static_para.name:" << g_static_para.name << endl;
}

ConsoleApplication1-test.cpp

#pragma once
#include <iostream>
#include "Common.h"
#include "init_class.h"
#include "use_class.h"

using namespace std;

int main()
{
	std::cout << "Hello World!\n";

	init_class ic;
	use_class uc;

	std::cout << "----------------------\n";
	g_static_para.state = false;
	g_static_para.num = 10;
	g_static_para.name = "测试信息1";
	uc.print();

	std::cout << "----------------------\n";
	ic.init();
	std::cout << "----------------------\n";
	uc.print();
}

下载

Demo下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1409007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch深度学习实战(32)——DCGAN详解与实现

PyTorch深度学习实战&#xff08;32&#xff09;——DCGAN详解与实现 0. 前言1. 模型与数据集分析1.1 模型分析1.2 数据集介绍 2. 构建 DCGAN 生成人脸图像小结系列链接 0. 前言 DCGAN (Deep Convolutional Generative Adversarial Networks) 是基于生成对抗网络 (Convolution…

《向量数据库指南》——Milvus Cloud向量数据库的新认知

除了数字上的里程碑,2023 年业务模式的改变也带来了很多定性的认知。这些认知帮助我们深化了对向量这种数据类型的理解,也引导了我们思考向量数据库未来的发展方向。 大模型应用仍处于初期阶段:避免重蹈智能手机时代“手电筒应用”的覆辙 回顾移动互联网早期,许多开发者创…

黑马苍穹外卖学习Day12

文章目录 工作台需求分析 Apache POI介绍入门案例 导出运营数据Excel报表需求分析代码开发 工作台 需求分析 Apache POI 介绍 入门案例 package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.a…

ubuntu20根目录扩容

ubuntu根目录/ 或者 /home文件夹有时出现空间满了的情况&#xff0c;可以用gparted工具进行空间的重新分配。 首先&#xff0c;如果你是双系统&#xff0c;需要从windows系统下磁盘压缩分配一部分未使用的空间给ubuntu&#xff0c;注意压缩的空间要邻接ubuntu所在盘的位置。 …

【学网攻】 第(4)节 -- 交换机划分Vlan

文章目录 【学网攻】 第(1)节 -- 认识网络 【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口 前言 网络已经成为了我们生活中不可或缺的一部分&#xff0c;它连接了世界各地的人们&#xff0c;让信息和资源得以自由流动。随着互联网的发展&am…

【pytorch】pytorch学习笔记

&#xff08;实践&#xff09;p5&#xff1a;线性回归问题中损失函数为什么要使用均方误差&#xff1f; 均方误差&#xff1a;即误差的平方和的平均数。 p8&#xff1a;1.pytorch不是一个完备的语言库&#xff0c;而是一个对于数据的gpu加速库&#xff0c;所以其没有对string…

【Golang入门教程】如何使用Goland创建并运行项目

自然语言处理的发展 文章目录 自然语言处理的发展**前言**创建新项目编辑运行/调试配置编写并运行代码总结强烈推荐专栏集锦写在最后 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站: 人工…

新能源汽车智慧充电桩管理方案:环境监测与充电安全多维感知

随着新能源技术的不断发展&#xff0c;新能源充电桩作为电动汽车的重要基础设施&#xff0c;其管理和维护变得尤为重要。环境监测类传感器能够实时监测充电桩周围的环境参数&#xff0c;如温度、湿度等&#xff0c;为管理人员提供及时、准确的数据&#xff0c;以便做出相应的调…

HTML+CSS:炫酷登录切换

效果演示 实现了一个登录注册页面的切换效果&#xff0c;当用户点击登录或注册按钮时&#xff0c;会出现一个叠加层&#xff0c;其中包含一个表单&#xff0c;用户可以在表单中输入用户名和密码&#xff0c;然后点击提交按钮进行登录或注册。当用户点击返回按钮时&#xff0c;会…

第三篇【传奇开心果短博文系列】Python的OpenCV库技术点案例示例:物体检测与识别

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例短博文系列 短博文目录一、项目目标二、OpenCV物体检测与识别介绍三、分别示例代码四、扩展示例代码 系列短博文目录 Python的OpenCV库技术点案例示例短博文系列 短博文目录 一、项目目标 物体检测与识别…

Pycharm终端显示PS而不显示虚拟环境venv

PS表示当前使用的是powershell.exe&#xff0c;如果你要显示虚拟环境名&#xff0c;则要改为cmd.exe 解决办法&#xff1a; 打开File-settings-Tools-Terminal-shell path 在文件中找到设置&#xff0c;在工具中找到终端 把第四个Shell路径设置为cmd.exe 3. 点击确定&#xf…

腾合力携思腾云全系列产品亮相2023算云融合产业大会

由中国信息通信研究院、中国通信标准化协会联合主办的首届算云融合产业大会于2023年3月29-30日在北京国际会议中心举办。大会围绕“云融万物 算启未来”主题&#xff0c;设置“主论坛六大分论坛”&#xff0c;覆盖产业热点领域及方向&#xff0c;全面推动我国算力云服务发展。集…

自定义错误页面在Spring Boot中的实现

引言 在SpringBoot中&#xff0c;常用的异常处理有两种&#xff1a;一种是 BasicErrorController&#xff0c;另一种是 ControllerAdvice。BasicErrorController 用于处理非Controller抛出的异常&#xff0c;而ControllerAdvice 用于处理Controller抛出的异常&#xff0c;对于…

windows vs2005编译libssh2支持sftp

windows vs2005编译libssh2支持sftp 1、编译模块 ​ 需要用到4个库&#xff1a;libcurl、libssh2、openssl、zlib 为啥要用libssh2 因为libcurl实现sftp功能依赖libssh2&#xff0c;是对libssh2的封装。 所以也可以直接用libssh2实现sftp。 为啥要用openssl 因为libssh2依…

【linux】查看进程和子进程

在Linux系统中&#xff0c;可以使用多个命令来查看进程及其子进程。以下是一些常用的方法&#xff1a; 1. ps 命令 ps 命令用于显示当前进程的状态。可以结合不同的选项来查看进程及其子进程。 查看进程树&#xff1a; ps -auxf - -a 显示所有进程。 - -u 显示进程的用户/所…

AI伦理边界:探索人工智能伦理计算

大家好&#xff0c;近年学界与工业界都已开始关注并热议 AI 伦理治理问题&#xff0c;也在伦理规范研究上取得了初步进展。然而&#xff0c;由于 AI 伦理的抽象性&#xff0c;如何定量化度量智能系统的伦理&#xff0c;还是一个未知的难题。 李学龙教授团队在《中国科学&#…

【学网攻】 第(5)节 -- Cisco VTP的使用

文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan 前言 网络已经成为了我们生活中不可或缺的一部分&#xff0c;它连接了世界各地的人们&#xff0c;让信息和资…

apple watch开通esim(一号双终端)报错解决方法

写在前面&#xff1a; 本文不一定可以解决您问题&#xff0c;本文记录了作者在遇到该情况时的处理办法&#xff0c;导致这个问题的原因会有很多&#xff0c;本文仅记录部分&#xff0c;仅供读者参考。与客服人员沟通时&#xff0c;请避免说esim&#xff0c;大多数客服人员不一定…

windbg :查看局部变量值

查看变量有以下几种常用方式&#xff1a; 仍以我们上篇 &#xff1a; 《windbg : x 命令》中的代码作为示例来讲解使用。 源码&#xff1a; #include <iostream>using namespace std;struct JKGirl{std::string name;int age;friend ostream& operator <<(o…

【机器学习300问】17、什么是欠拟合和过拟合?怎么解决欠拟合与过拟合?

一个问题出现了&#xff0c;我们首先要描述这个问题&#xff0c;然后分析问题出现的原因&#xff0c;找到原因后提出解决方案。废话不多说&#xff0c;直接上定义&#xff0c;然后通过回归和分类任务的例子来做解释。 一、什么是欠拟合和过拟合&#xff1f; &#xff08;1&am…