C++中extern的使用

news2024/10/6 12:21:27

目录

    • 什么是extern?
    • 如何使用extern?
      • 声明一个全局变量或函数
      • 在当前文件中引用其他文件中定义的全局变量或函数
    • 应用场景
    • 拓展
    • 结论

在C++中,extern是一个非常重要的关键字,它用于声明一个变量或函数是在其他文件中定义的。在本文中,我们将详细介绍extern的使用方法,并提供一些实际应用场景。

什么是extern?

extern是一个关键字,用于告诉编译器一个变量或函数是在其他文件中定义的。它可以用于两种情况:

  1. 声明一个全局变量或函数,以便在其他文件中使用。
  2. 在当前文件中引用其他文件中定义的全局变量或函数。

如何使用extern?

声明一个全局变量或函数

假设我们有两个文件:main.cpp和helper.cpp。我们想在main.cpp中使用helper.cpp中定义的全局变量和函数。为此,我们需要在main.cpp中使用extern关键字来声明这些变量和函数。

// helper.h
extern int global_variable;

extern  void helper_function() ;
// helper.cpp
int global_variable = 42;

void helper_function() {
    // do something
}
// main.cpp
extern int global_variable;
extern void helper_function();

int main() {
    // use global_variable and helper_function
    printf("%d", global_variable);
    helper_function();
    return 0;
}

在当前文件中引用其他文件中定义的全局变量或函数

假设我们有两个文件:main.cpp和helper.cpp。我们想在helper.cpp中使用main.cpp中定义的全局变量和函数。为此,我们需要在main.cpp中使用extern关键字来声明这些变量和函数,并在helper.cpp中使用它们。

// main.cpp
extern int global_variable;

void main_function() {
    // do something
}
// helper.cpp
extern int global_variable;
extern void main_function();

void helper_function() {
    // use global_variable and main_function
}

应用场景

extern通常用于大型项目中,其中代码被分为多个文件。它允许在一个文件中定义变量或函数,并在其他文件中使用它们。这样,我们可以更好地组织代码,并使其更易于维护。

例如,在一个游戏项目中,我们可能有一个文件来处理用户输入,另一个文件来处理游戏逻辑,还有一个文件来处理图形渲染。使用extern,我们可以在这些文件之间共享变量和函数,从而使代码更加模块化和易于管理。

拓展

结合原子变量实现多线程操作

在头文件定义原子变量
在这里插入图片描述
cpp文件初始化
在这里插入图片描述
多线程使用
头文件声明变量
在这里插入图片描述
多线程并发使用
在这里插入图片描述

结论

在C++中,extern是一个非常有用的关键字,用于在多个文件之间共享变量和函数。它可以使代码更加模块化和易于管理。在使用extern时,请确保正确地声明变量和函数,并在需要时使用它们。

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

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

相关文章

电子企业MES管理系统有哪些特征

随着科技的飞速发展和全球化的推进,电子行业已成为当今社会至关重要的产业之一。在这个高度竞争的市场环境中,实施一套有效的生产执行管理系统是电子企业提高效率、降低成本、提升品质的重要手段。本文将详细介绍电子企业MES管理系统的特征。 一、定义和…

使用mybatis批量插入数据

最近在做项目的时候&#xff0c;有些明细数据&#xff0c;一条一条的插入太费资源和时间&#xff0c;所以得需要批量插入&#xff0c;今晚闲来无事写个小demo。 新建工程 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis…

歌曲推荐《最佳损友》

最佳损友 陈奕迅演唱歌曲 《最佳损友》是陈奕迅演唱的一首粤语歌曲&#xff0c;由黄伟文作词&#xff0c;Eric Kwok&#xff08;郭伟亮&#xff09;作曲。收录于专辑《Life Continues》中&#xff0c;发行于2006年6月15日。 2006年12月26日&#xff0c;该曲获得2006香港新城…

可视化工具之pyecharts

一、pyecharts基础 1、概述 Pyecharts是一款将python与echarts结合的强大的数据可视化工具。使用 pyecharts 可以生成独立的网页&#xff0c;也可以在 flask , Django 中集成使用。 echarts 是百度开源的一个数据可视化 JS 库&#xff0c;主要用于数据可视化。pyecharts 是一…

PyCharm控制台中英文显示切换

一开始全英环境下不适应安装了汉化包插件&#xff0c;使用后发现还是英文显示好使&#xff0c;现在切换回来。 要在 PyCharm 中将界面语言设置为英文&#xff0c;可以按照以下步骤操作&#xff1a; 打开 PyCharm&#xff0c;在主菜单中依次选择「File」、「Settings」。在「S…

App Inventor 2 列表选择框(ListPicker)用法示例

设置固定的列表项&#xff0c;设置“元素字串”属性&#xff0c;多个列表项使用英文逗号分隔&#xff1a; 点击效果如下&#xff1a; 选择完成后的事件处理&#xff0c;最终选中的数据通过“选中项”属性获取&#xff1a; 通过代码块动态设置列表选择框的列表项&#x…

【服务器 | 测试】如何在centos 7上面安装jmeter

安装之前需要几个环境&#xff0c;以下是列出的几个环境 CentOS 7.7 64位JDK 1.8JMeter 5.2 1. 下载jmeter安装包 JMeter是开源的工具&#xff0c;安装 JMeter 要先安装好 JDK 的环境&#xff0c;安装JDK在前面的文章已经讲到 JMeter最新版下载地址&#xff1a;Apache JMeter…

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入 功能介绍代码案例输出结果封装扩展方法控制台调用 其他方法地址 功能介绍 1. 输入的数字是整数&#xff0c;则直接返回整数部分的字符串表示。 2. 如果输入的数字是小数&#xff0c;则执行…

百家宴焕新上市,持续深耕100-300元价位段

执笔 | 尼 奥 编辑 | 古利特 4月8日&#xff0c;长江酒道曾在《百家宴谋划“晋级”之路&#xff0c;多措并举切分宴席市场“蛋糕”》一文中提到&#xff1a;“百家宴主力新品即将登场&#xff0c;市场政策灵活焕新。” 如今&#xff0c;百家宴新品及市场新政&#xff0c;正…

计算机二级公共基础知识-2023

计算机基础知识&#xff1a; 计算机的发展&#xff1a; 第一台电子计算机eniac 埃尼阿克 1946 第一台存储程序计算机 edvac 艾迪瓦克 根据电子元器件的发展分类 1.电子管 2.晶体管 3.集成电路 4.超大规模继承电路 按照电脑的用途可以分为 专用计算机 专门用于处理…

vcomp100.dll丢失怎样修复?5个靠谱的修复方法分享

VCOMP100.DLL 是由微软打造的动态链接库&#xff0c;它对于一些图形密集型应用&#xff0c;例如Photoshop&#xff0c;以及多款知名游戏如巫师3的运行至关重要。 如果操作系统在启动应用程序时无法找到此vcomp100.dll&#xff0c;则会出现vcomp100.dll丢失或未找到错误。 如果D…

Google 基于 GNN 开发气味识别 AI,工作量相当于人类评价员连续工作 70 年

内容一览&#xff1a;气味总是萦绕我们身边。然而&#xff0c;我们却很难对气味准确描述。最近&#xff0c;Google Research 的子公司 Osom 基于图神经网络&#xff0c;开发了气味分析 AI。它可以根据化学分子的结构&#xff0c;对分子的气味进行预测。基于这一 AI&#xff0c;…

2023年法国CAC40指数研究报告

第一章 指数概况 1.1 指数基本情况 CAC 40指数&#xff0c;全名 Cotation Assiste en Continu (意为“连续辅助报价”)&#xff0c;是法国巴黎股票交易所的标志性股票指数&#xff0c;与德国DAX指数及英国富时100指数并列为欧洲三大指数。自1987年12月31日成立以来&#xff0…

【Linux学习笔记】基础命令1

1. 什么是操作系统2. Linux基本指令2.1. ls指令2.2. pwd命令2.3. cd命令2.4. touch命令2.5. mkdir命令 1. 什么是操作系统 这里简单的讲述一下操作系统的概念&#xff0c;来看下图示&#xff1a; **操作系统是计算机系统中的一种软件&#xff0c;它负责管理计算机硬件资源和提…

CentOS 安装HTTP代理服务器 Tinyproxy

Tinyproxy是一个小型的基于GPL的HTTP/SSL代理程序&#xff0c;非常适合小型网络而且便于快速部署。这个代理程序最大的优点就是占用系统资源比较少。这里使用的系统为CentOS7.6&#xff0c;可以直接 yum 方式安装。 yum install tinyproxy -y 如果提示找不到安装包&#xff0…

中国各省市相关图标

中国各省市相关图标

buuctf crypto 【[GUET-CTF2019]BabyRSA】解题记录

1.打开文件 2.给出了pq以及&#xff08;p1&#xff09;*(q1),e&#xff0c;d&#xff0c;c&#xff0c;就可以得出结果了 import gmpy2 from Crypto.Util.number import long_to_bytes #pq用x表示 #(p1)(q1)用y表示 x 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed3…

Python爬虫基础(二):使用xpath与jsonpath解析爬取的数据

文章目录 系列文章索引一、使用xpath解析html文件1、浏览器安装xpath-healper&#xff08;1&#xff09;谷歌浏览器安装&#xff08;需要科学上网&#xff09;&#xff08;2&#xff09;验证&#xff08;3&#xff09;使用文件安装&#xff08;不需科学上网&#xff09; 2、安装…

2023年基因编辑行业研究报告

第一章 行业发展概况 1.1 定义 基因编辑&#xff08;Gene Editing&#xff09;&#xff0c;又称基因组编辑&#xff08;Genome Editing&#xff09;或基因组工程&#xff08;Genome Engineering&#xff09;&#xff0c;是一项精确的科学技术&#xff0c;可以对含有遗传信息的…

NotePad——xml格式化插件xml tools在线安装+离线安装

在使用NotePad时&#xff0c;在某些情形下&#xff0c;需要格式化Xml格式内容&#xff0c;可以使用Xml Tools插件。 一、在线安装 1. 打开Notepad 软件 2. 选择插件&#xff0c;选择“插件管理” 3. 搜索 XML Tools&#xff0c;找到该插件后&#xff0c;勾选该文件&#xff…