C++创建全局变量建议

建议将全局变量创建在.h/.cpp文件中,其中.h文件声明变量,.cpp文件中定义变量值。

在.h文件中定义变量,则工程多次#include该文件会出现“该文件已经被使用”。

具体示例如下:

synchronize_data.h

//
// Created by qiaowei on 2023-10-28.
//#ifndef CPPGUIPROGRAMMINGWITHQT4INCLION_SYNCHRONIZE_DATA_H
#define CPPGUIPROGRAMMINGWITHQT4INCLION_SYNCHRONIZE_DATA_H#include <QChar>
#include <QSemaphore>/*** @date   2023-10-28* @author qiao wei* @brief  要传输的总数据数量。*/
extern const int kDataSize;/*** @date   2023-10-28* @author qiao wei* @brief  数据池容量。*/
extern const int kBufferSize;/*** @date   2023-10-28* @author qiao wei* @brief  数据池。初始阶段,数据池未存放任何数据*/
extern QChar buffer[];/*** @date   2023-10-30* @author qiao wei* @brief  自由信号标。在初始阶段有kBufferSize个自由信号标可用。数据池每放入1个数据,自由信号标就减1个。*/
extern QSemaphore free_semaphore;/*** @date   2023-10-30* @author qiao wei* @brief  可用信号标。在初始阶段没有数据可用,所以可用信号标数量为0。当数据池放入1个还未用的数据时,可用信号标就增加1个。*/
extern QSemaphore used_semaphore;#endif //CPPGUIPROGRAMMINGWITHQT4INCLION_SYNCHRONIZE_DATA_H

synchronize_data.cpp

//
// Created by qiaowei on 2023-11-01.
//#include "synchronize_data.h"const int kDataSize{1000};const int kBufferSize{4};QChar buffer[kBufferSize];QSemaphore free_semaphore{kBufferSize};QSemaphore used_semaphore{0};

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

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

相关文章

python 数据挖掘库orange3 介绍

orange3 是一个非常适合初学者的data mining library. 它让使用者通过拖拽内置的组件来形成工作流。让你不需要写任何代码就可以体验到数据挖掘和可视化的魅力。 它的桌面如下&#xff0c;这里我创建了 3 个节点&#xff0c;分别是数据集、小提琴图&#xff0c;散点图 其中 …

Qt扫盲-QFutureWatcher理论总结

QFutureWatcher理论总结 一、概述二、转态 一、概述 QFutureWatcher类允许我们使用信号槽的方式去监控QFuture。 QFutureWatcher提供关于QFuture的信息和通知。使用 setFuture() 函数开始监视特定的QFuture。 future()函数通过setFuture()返回 QFuture 集合。 为了方便起见…

UE5——网络——RPC

RPC&#xff08;这个是官方文档的资料&#xff09; 要将一个函数声明为 RPC&#xff0c;您只需将 Server、Client 或 NetMulticast 关键字添加到 UFUNCTION 声明。 例如&#xff0c;若要将某个函数声明为一个要在服务器上调用、但需要在客户端上执行的 RPC&#xff0c;您可以…

【Linux】配置JDKTomcat开发环境及MySQL安装和后端项目部署

目录 一. JDK及tomcat安装 二&#xff0c;安装Tomcat 三&#xff0c;MySQL安装 四、后端部署 前言&#xff1a; 今天我们就来在Linux上安装JDK及tomcat&#xff0c;MySQL&#xff0c;希望你可以通过这一博客&#xff0c;找到你的答案&#xff01;&#xff01;&#xff01; …

2023-macOS下安装anaconda,终端自动会出现(base)字样,如何取消

2023-macOS下安装anaconda&#xff0c;终端自动会出现(base)字样&#xff0c;如何取消 安装后&#xff0c;我们再打开终端&#xff0c;就会自动出现了&#xff08;base&#xff09; 就会出现这样子的&#xff0c;让人头大&#xff0c; 所以我们要解决它 具体原因是 安装了anac…

从JDBD的封装方面重新认识Mybaits

前言&#xff1a;SQLSession是对JDBC的封装 MyBatis 是一个 Java 持久化框架&#xff0c;它通过对 JDBC 的封装来简化数据库访问操作。核心的 SQLSession 对象是 MyBatis 的核心组件之一&#xff0c;负责管理数据库连接、执行 SQL 语句以及映射查询结果等功能。 具体来说&…

Windows11恢复组策略编辑器功能的方法

原因分析 日常工作学习中,对 Windows 计算机上的问题进行故障排除时,有些高级用户经常使用组策略编辑器轻松修复它。通过其分层结构,您可以快速调整应用于用户或计算机的设置。如果搜索结果中缺少组策略编辑器,则可能必须使用注册表编辑器作为疑难解答工具,这是一种更复杂…

nmap指纹识别要点以及又快又准之方法

nmap指纹识别要点以及又快又准之方法 一. 前言:二. nmap识别实验:一. 实验一:IP配置:空间配置:扫描结果:详细输出二. 实验二:IP配置:空间配置:扫描结果:详细输出三. 实验三:IP配置:空间配置:扫描结果:详细输出四. 实验四:IP

力扣:147. 对链表进行插入排序(Python3)

题目&#xff1a; 给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。每次迭代中&#xff0c…

调试人脸识别项目解决方法的链接

1、failed call to cuInit: CUDA_ERROR_NO_DEVICE https://blog.csdn.net/JoyceYa/article/details/104379697/ 2、tensorflow.python.framework.errors_impl.InternalError: Blas SGEMM launch failed https://blog.csdn.net/See_Star/article/details/108762531 3、Attri…

Golang Web3钱包开发指南

简介 以太坊&#xff08;Ethereum&#xff09;是目前最受欢迎的区块链平台之一&#xff0c;它提供了智能合约功能和去中心化应用&#xff08;DApps&#xff09;的开发能力。在以太坊生态系统中&#xff0c;Web3钱包扮演着关键角色&#xff0c;允许用户管理账户和密钥、发送交易…

0基础学习PyFlink——时间滑动窗口(Sliding Time Windows)

在《0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)》我们介绍了不会有重复数据的时间滚动窗口。本节我们将介绍存在重复计算数据的时间滑动窗口。 关于滑动窗口&#xff0c;可以先看下《0基础学习PyFlink——个数滑动窗口&#xff08;Sliding Count Windows&#x…

韩国ORANGE橘子室内高尔夫—万万没想到除了打球还能唱歌、看电影

韩国ORANGE橘子室内高尔夫—万万没想到除了打球还能唱歌、看电影&#xff01; 你知道吗&#xff1f;室内高尔夫除了打球&#xff0c;还可以唱歌 看电影&#xff01; 在这个让人兴奋的室内高尔夫场地&#xff0c;你将体验到全新的娱乐方式。快来和小伙伴们一起挥杆&#xff0c;…

springboot医院绩效考核系统源码

医院绩效考核系统是一种以人力资源管理为基础&#xff0c;选用适合医院组织机构属性的绩效理论和方法&#xff0c;基于医院战略目标&#xff0c;构建全方位的绩效考评体系&#xff0c;在科学、合理的绩效管理体系基础上&#xff0c;采用科学管理的方法&#xff0c;如平衡计分卡…

DNEAT: 一个全新的用于OD需求预测的动态节点-边注意力网络

文章信息 本周阅读的论文是一篇2020年发表在《Transportation Research Part C》上关于OD需求预测的文章&#xff0c;题目为《DNEAT: A novel dynamic node-edge attention network for origin-destination demand prediction》。 摘要 近年来&#xff0c;网约车服务平台在全球…

MCU HardFault_Handler调试方法

一.获取内核寄存器的值 1.在MDK的DEBUG模式下&#xff0c;当程序出现跑飞后&#xff0c;确定卡死在HardFault_Handler中断处 2. 通过Register窗口读取LR寄存器的值来确定当前系统使用堆栈是MSP还是PSP LR寄存器值堆栈寄存器0xFFFFFFF9MSP寄存器0xFFFFFFFDPSP寄存器 如下图所…

机器学习-特征工程

一、特征工程介绍 1.1 什么是特征 数值特征&#xff08;连续特征&#xff09;、文本特征&#xff08;离散特征&#xff09; 1.2 特征的种类 1.3 特征工程 特征是机器学习可疑直接使用的&#xff0c;模型和特征之间是一个循环过程&#xff1b; 实际上特征工程就是将原始数据…

程序员福利,免费好用的API汇总

全国快递物流地图轨迹查询&#xff1a;【H5物流轨迹、单号识别】通过物流单号和收寄件地址&#xff0c;自动评估物流时效&#xff0c;并在地图中展示包裹运输轨迹。包括顺丰、圆通、申通等主流快递公司。自动识别快递公司及单号&#xff0c;实时查询&#xff0c;稳定高效&#…

js的垃圾回收机制?

JavaScript 的垃圾回收机制是自动进行的&#xff0c;开发者不需要手动管理内存。垃圾回收机制的主要目标是找出不再使用的变量&#xff0c;并释放其占用的内存空间。在 JavaScript 中&#xff0c;当一个变量或对象不再被引用时&#xff0c;垃圾回收器会认为它不再需要&#xff…

Redsync 源码简单分析

Redsync 源码简单分析 加锁自动续期解锁 加锁 使用 setnx 进行加锁&#xff0c;没有实现分布式锁的可重入性。 func (m *Mutex) acquire(ctx context.Context, pool redis.Pool, value string) (bool, error) {conn, err : pool.Get(ctx)if err ! nil {return false, err}def…