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

目录

效果

项目

代码 

下载


为了实现跨文件共享全局变量,我们可以使用 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下载

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据开发之Spark(完整版)

第 1 章&#xff1a;Spark概述 1.1 什么是spark 回顾&#xff1a;hadoop主要解决&#xff0c;海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚&#xff…

搭建Vite和Vue环境

​ 第一步&#xff1a;创建一个文件夹&#xff08;此处为新建文件夹&#xff09;&#xff0c;并通过vscode打开 第二步&#xff1a;鼠标右键新建终端&#xff0c;并在终端处输入代码npm create vuelatest ​第三步&#xff1a;输入该项目名称&#xff08;该项目名称并不是第一…

强制删除的文件还能恢复吗?答案分享!

“我在电脑上删除部分文件时总是显示无法删除&#xff0c;因此我把这部分文件强制删除了。这些文件还有机会恢复吗&#xff1f;怎样才能恢复这部分数据呢&#xff1f;希望大家帮我想想办法。” 部分用户在电脑上执行删除操作时&#xff0c;也可能会误删比较重要的数据。如果这部…

大模型学习与实践笔记(十三)

将训练好的模型权重上传到 OpenXLab 方式1&#xff1a; 先将Adapter 模型权重通过scp 传到本地&#xff0c;然后网页上传 步骤1. scp 到本地 命令为&#xff1a; scp -o StrictHostKeyCheckingno -r -P *** rootssh.intern-ai.org.cn:/root/data/ e/opencv/ 步骤2&#…

新加坡市场外贸开发攻略

新加坡&#xff0c;东南亚的一颗璀璨明珠&#xff0c;坐落于马来西亚半岛南端&#xff0c;与印度尼西亚的苏门答腊岛隔海相望。这个城市国家不仅拥有现代化的城市风貌&#xff0c;还融合了多元文化背景。 以下是对新加坡的国家介绍&#xff1a; 首都新加坡&#xff0c;是政治…

etcd技术解析:构建高可用分布式系统的利器

1. 引言 随着云原生技术的兴起&#xff0c;分布式系统的构建变得愈发重要。etcd作为一个高可用的分布式键值存储系统&#xff0c;在这个领域发挥着至关重要的作用。本文将深入探讨etcd的技术细节&#xff0c;以及如何利用它构建高可用的分布式系统。 2. etcd简介 etcd是一个开…

软件有必要更新吗?

软件更新是非常重要的&#xff0c;以下是几个理由&#xff1a; 1. 修复漏洞和安全问题&#xff1a;软件更新通常包含了对之前版本中发现的漏洞和安全问题的修复。这些漏洞和问题可能会被黑客利用&#xff0c;导致数据泄露、系统崩溃或其他安全风险。通过及时更新软件&#xff…

【Unity】【游戏开发】Pico打包后项目出现运行时错误如何Debug

【背景】 开发过程中的报错可以通过控制台查看&#xff0c;但是PICO项目这类依赖特定设备环境的应用往往存在打包后在设备端发生运行时错误。这时如何能查看到Debug信息呢&#xff1f; 【分析】 Pico也是安卓系统&#xff0c;所以这个问题就可以泛化为Unity有哪些在安卓端运…

智能AI写作大师,这几个软件你一定要看

写作是我们生活和工作中不可或缺的一部分。然而&#xff0c;写作是一件需要素材积累和大量时间精力的事情&#xff0c;对于许多人来说&#xff0c;写作真的是一件轻松的事情。幸运的是&#xff0c;由于科技的不断进步&#xff0c;智能AI写作软件应运而生&#xff0c;为我们提供…

【排序2】-交换排序

&#x1f47b;交换排序 &#x1f384;1、基本思想及特点&#x1f384;2、冒泡排序&#x1f384;3、快速排序&#xff08;挖坑法&#xff09;&#x1f384;4、快速排序优化&#x1f38a;4.1 三数取中法选key&#x1f38a;4.2 递归到小的子区间时&#xff0c;可以考虑使用插入排序…

React进阶 - 12(浅谈 state、props与render函数的关系)

本章内容 目录 一、state 与 render 函数的关系二、props 与 render函数的关系 上一节我们讲了如何使用 PropTypes及 DefaultProps来进行属性的类型校验及设置属性默认值。本节内容我们来了解一下 state、props与render函数的关系。 一、state 与 render 函数的关系 我们知道…

THM学习笔记——OSI模型和TCP/IP模型

全是文字 比较枯燥 建议视频 OSI模型由七个层次组成&#xff1a; 第7层 -- 应用层&#xff1a; OSI模型的应用层主要为在计算机上运行的程序提供网络选项。它几乎专门与应用程序一起工作&#xff0c;为它们提供一个界面以用于传输数据。当数据传递到应用层时&#xff0c;它…

大数据Doris(五十九):SQL函数之字符串函数(三)

文章目录 SQL函数之字符串函数(三) 一、​​​​​​​NULL_OR_EMPTY (VARCHAR str)

防御保护---防火墙(安全策略、NAT策略实验)

防御保护---防火墙&#xff08;安全策略、NAT策略实验&#xff09; 1.实验需求2.实验说明及思路3.实验配置3.1 配置IP地址以及VLAN3.2 配置防火墙IP地址及划分区域3.3 配置防火墙安全策略3.4 配置防火墙NAT策略 1.实验需求 1.生产区在工作时间内可以访问服务器区&#xff0c;仅…

Adobe XD 57.1.12.2软件安装教程(附软件下载地址)

软件简介&#xff1a; 软件【下载地址】获取方式见文末。注&#xff1a;推荐使用&#xff0c;更贴合此安装方法&#xff01; Adobe XD 57.1.12.2是一款功能强大的图形化界面UI/UX设计工具&#xff0c;它集成了原型设计、界面设计和交互设计等功能。无论是网站还是移动应用程序…

代码随想录算法训练营第14天| Leetcode 102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树

目录 Leetcode 102.二叉树的层序遍历 Leetcode 226.翻转二叉树 Leetcode 101.对称二叉树 Leetcode 102.二叉树的层序遍历 题目链接&#xff1a;Leetcode 102.二叉树的层序遍历 题目描述&#xff1a;给你二叉树的根节点root &#xff0c;返回其节点值的 层序遍历 。 &#xff…

Unity学习之坦克游戏制作(2)游戏场景的制作

文章目录 1. 基础场景的搭建2. 游戏主面板2.1 拼出面板2.2 创建新面板2.3 设置面板复用2.4 退出界面 3. 坦克基类3.1 创建基类脚本3.1.1 基类基本属性3.1.2 抽象开火函数3.1.3 受伤虚函数3.1.4 死亡虚函数 4 玩家——基础移动旋转摄像机跟随4.1 玩家对象脚本4.2 控制坦克移动4.…

【Docker】实战案例 - CI/CD

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; CI/CD 持续集成(Continuous integration) 是一种软件开发实践&#xff0c;每次集成都通过自动化的构建&#xff08;包括编译&#xff0c;发…

Dockerfile里ADD * 保留原来的目录结构

1、问题 给新模块写Dockerfile&#xff0c;很多静态资源分散在各个目录&#xff0c;于是Dockerfile里我直接一句&#xff1a; ADD ./* /dest/镜像出来后&#xff0c;启动容器&#xff0c;进入容器种后发现&#xff1a;文件拷贝成功&#xff0c;但原来的目录结构都不在了&…

Rabbitmq调用FeignClient接口失败

文章目录 一、框架及逻辑介绍1.背景服务介绍2.问题逻辑介绍 二、代码1.A服务2.B服务3.C服务 三、解决思路1.确认B调用C服务接口是否能正常调通2.确认B服务是否能正常调用A服务3.确认消息能否正常消费4.总结 四、修改代码验证1.B服务异步调用C服务接口——失败2.将消费消息放到C…