关于“extern”关键字的用法总结

C++中 extern “C“ 关键字的作用和用法(附代码示例) C++中 extern "C" 关键字的作用和用法(附代码示例) 阅读详情

基本定义:

C++编程中,extern是一个非常重要的关键字,它的用途主要是用来声明一个全局变量或者函数。它告诉编译器,其声明的变量或者函数是在别的文件中,提示编译器在链接阶段从其他文件中寻找此变量或函数的定义。也就是说,它只是告诉编译器变量或函数的类型,而不会分配内存。

extern int x;  // 声明变量'x'是在其他文件中定义的

一般用法:

链接外部变量:当我们在多个文件中使用同一个变量时,extern可以帮助我们实现这一目标。例如,我们有两个文件,A.cpp和B.cpp,我们可以在A.cpp中定义一个变量,在B.cpp中通过extern关键字来使用这个变量。

//A.cpp

int testext = 0;  // 定义一个全局变量
//B.cpp

extern int testext;  //声明外部变量

int main() {
    //使用外部变量
    testext = 10;
    return 0;
}

链接外部函数:除了变量之外,extern也可以用于声明在其他文件中定义的函数。我们可以在A.cpp中定义一个函数,在B.cpp中通过extern关键字来使用这个函数。 

//A.cpp

void testFunc() //定义一个函数
{
    // 函数体
}
//B.cpp

extern void testFunc();  //声明外部函数

int main() {
    //调用外部函数
    testFunc();
    return 0;
}

对于函数而言,由于函数的声明如“extern int func ();”与函数定义“int func (){}”可以很清晰的区分开来,为了简便起见,可以把extern关键字省略,而变量的声明一定不可以省略。但是在引用函数的文件中,必须使用extern关键字 

//以下2种写法是等效的
void testFunc(); 
extern void testFunc();

也可以将声明语句放在一个头文件中,然后被其他文件#include。extern的作用就是扩大变量的作用域,首先将变量作用域扩展到头文件,头文件再被其他文件include,作用域又扩展到调用文件。

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

extern "C"的用法: 

在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern "C"就是其中的一个策略。它告诉编译器,在编译 func 函数名时,按照 C 的规则去翻译相应的函数名,而不是 按C++ 的方式,这样当C++代码被C语言调用时,可以避免链接错误

extern "C" void testFunc();  // 用C语言方式链接的函数

总结:

在C++编程中,理解并熟练掌握extern关键字的用法,对于我们编写模块化、可重用的代码,实现跨文件的变量和函数的共享,具有重要的意义。 

extern的使用 例子 extern的用法,以及自己测试extern的几个程序 立即下载

相关推荐

extern用法详解extern用法详解extern用法详解extern用法详解

extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解extern用法详解

extern使用方法总结

extern使用方法总结

weixin_49934173的博客 1万+

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 449

【014 关键字】一文彻底搞懂extern用法

一、遇到的问题: 头文件和源文件中都定义了一个结构体变量,但是编译器不报错! 二、定义和声明的区别 声明:用来告诉编译器变量的名称和类型,而不分配内存,不赋初值。 定义:为了给变量分配内存,可以为变量赋初值。 三、extern用法 四、问题解答 ...

kashine的博客 9万+

忆阻器(二)——忆阻模拟器

除了真实的器件,我们也可以用运放和乘法器来搭忆阻模拟器。这节将介绍数学模型、matlab仿真及multisim仿真。 一、数学模型 忆阻分为磁控和荷控两种,这里介绍三次非线性磁控忆阻模型: {I=W(φ)VW(φ)=a+3bφ2dφdt=V \begin{cases} I=W(\varphi)V \\ W(\varphi)=a+3b \varphi ^2\\ \frac{d \varphi }{dt}=V \end{cases} ⎩⎪⎨⎪⎧​I=W(φ)VW(φ)=a+3bφ2dtdφ​=V​ 这里的WWW

http://www.icfgblog.com/ 1万+

教你读懂techpoint视频解码芯片tp2855规格书(第一部分)

所有的控制环都是可编程的,以实现最大化的灵活性。对于NTSC/PAL输入,输出时钟和采样结构是非标准的,以便在多路复用输出时与HD格式一同工作。所有通道的音频数据都可以选择性地级联,以实现最大的灵活性。TP2855是一款通用的高清/标清视频解码器芯片,其支持对HD-TVI、NTSC/PAL制式960H分辨率及普通AHD视频格式的解码。TP2855具有内部钳位,在每个通道上都有自动增益控制放大器,用于最佳的信号调节。即使在使用低质量和长线缆的条件下,它的可编程均衡放大器和自动控制环也能维持尚佳的表现。

hufan92的博客 4920

extern怎么使用

关键字会与头文件一起使用,将声明放在头文件中,然后在需要使用的源文件中包含该头文件。关键字来声明一个在其他源文件中定义的全局函数。同样地,这样可以告诉编译器函数的定义在其他地方,从而避免重复定义。关键字只是声明变量或函数的存在,并不进行实际的定义。关键字用于在一个源文件中声明一个在其他源文件中定义的全局变量或函数。关键字,可以告诉编译器某个变量或函数的定义在其他地方,从而避免重复定义。关键字来声明一个在其他源文件中定义的全局变量。关键字,可以确保编译器知道它们的定义在其他地方,并进行正确的链接。

斯坦福-MIT-Harvard-CMU 1331

rfid标签技术原理

奇怪的是,RFID标签技术原理的深入剖析不仅揭示了其背后的奥秘,也让我们更加全面地认识到这一技术在数字化转型中的重要性和潜力。随着技术的不断进步和应用场景的不断拓展,RFID标签将在更多领域发挥重要作用,为物联网、智能制造等领域的发展注入新的活力。这意味着在一个读写器的覆盖范围内,可以同时读取多个RFID标签的数据,大大提高了数据收集的速度和效率。:RFID标签的“大脑”,负责存储和处理数据。芯片内部集成了存储器、控制逻辑和射频接口等电路,能够接收来自读写器的射频信号,执行相应的数据处理和通信任务。

x3088的博客 2159

extern关键字的用法

个人在学习过程中对extern关键用法的一些见解!

D1557329860的博客 1448

把冷门数据从内存里请出去:ABAP 环境下玩转 SAP HANA Native Storage Extension (NSE) 的开发者实战笔记

摘要:SAP HANA NSE技术为ABAP系统提供了一种经济高效的温数据管理方案。文章首先指出企业数据存在"温度分层"现象,高频访问的热数据需常驻内存,而低频温数据更适合存储在磁盘或闪存。NSE通过混合列存架构,将不常访问的数据移至磁盘但仍保持数据库内统一管理,显著降低内存成本。 关键实施要点包括:在ADT技术设置中将Load Unit设为"Page Enforced"以启用NSE;理解buffer cache作为数据"抽屉"的工作原理;掌握选表

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 164

【数据湖仓】:Iceberg、Hudi 和 Paimon 对比

适用于需要多计算引擎支持和复杂查询的离线批处理场景。其中立性和灵活性使其成为构建新型数据平台的理想选择。:在需要高频数据更新和高效小文件管理的场景中表现出色,适合实时数据处理和增量数据更新的业务需求。:专为实时流式数据处理设计,适用于对数据实时性要求高的业务场景,如实时数据分析和实时指标监控。通过以上分析,可以看出 Apache Iceberg、Apache Hudi 和 Apache Paimon 各有其独特的优势和适用场景。企业应根据自身业务需求和技术栈选择合适的数据湖仓方案,以充分发挥其价值。

欢迎来到我的博客,一起探索代码里的世界! 1610

C语言中extern和extern “C“关键字的用法

extern和extern "C"关键字 C/C++中使用 extern 声明的变量或函数,它们的作用域是全局的,告诉编译器使用该关键字声明的变量可以在本模块或其他模块中使用。只是 声明(declaration) 了变量,但是并没有 定义(definition) 该变量,需要在具体使用的地方去定义该变量。 // 在某个.h 文件中声明了变量 extern int a; // 在某个具体的.c或.cpp文件中使用 int a = 100; extern "C" 的作用是为了能够正确在 C++ 代码

Steve Ellison 1183

YOLO26 从零到工业落地全实战:自定义训练+多场景测试+边缘部署预备,踩坑实测100%可复现

很多人觉得训练是核心,其实不是——数据集的质量,直接决定了你模型的上限。我见过太多人,标注不规范、格式错误、数据集划分混乱,然后疯狂调参,训了几百轮还是不收敛,纯属白费功夫。我这次用的是工业零件缺陷检测自定义数据集,共3个类别:划痕、毛刺、变形,总计1200张图片,给大家讲一套标准的、可复现的数据集制作流程,不管你是做工业检测、安防、交通,都能直接套用。很多人拿到数据集,直接用默认命令训练,然后抱怨精度上不去。默认参数是给COCO数据集用的,你的自定义数据集,必须针对性调参,不然根本达不到最优效果。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 569

C语言中,“extern”关键字的含义与用法

extern关键字用于声明已经在其他地方定义的变量或函数。对于全局变量,使用extern可以在多个文件之间共享同一个变量。对于函数,虽然通常不需要显式使用extern,但在某些情况下(如静态链接库)可能需要使用extern来声明函数。通过合理使用extern,可以有效地管理和组织大型项目的代码。

嵌入式行业打工人,不定期更新博客。 4094

Arduino ESP32S3 基础入门教学大纲

ESP32环境、Arduino

追梦 3546

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C++-关键字:extern “C”的用法和作用

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码,实现C++与C及其它语言的混合编程。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。

u013250861的博客 691

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

extern的用法

C语言中extern的用法 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面...

Hacker_LiuSX的博客 7769

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

c语言中cplusplus用法,C++ 调用C语言、extern "C"、__cplusplus关键字

——C++编译器完全兼容C语言的编译方式。(但是得有源代码)——C++编译器会优先使用C++的编译方式进行编译——extern "C" 关键字能够强制C++编译器进行C方式的编译学习目标:实现C语言与C++之间的互相调用学习 extern "C" {} 关键字学习 __cplusplus标准宏实验一、通过C++调用C编译器编译出来的   .o  文件 (extern "C" 关键字使用)1、创建文...

weixin_39602615的博客 680

博客摘录「 C语言extern关键字用法和理解」2023年4月29日

在文件中的函数声明前加extern即可,不加extern而直接声明函数也可以,因为声明全局函数默认前面带有extern。

m0_51993642的博客 134

extern用法

1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。 2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样...

dianqi7184的专栏 102

C语言面试篇:extern关键字

答案extern声明仅告诉编译器变量的类型和名称,表明变量在其他文件中定义,不分配内存;定义变量(如int a = 10;)会分配内存并初始化。若extern声明时赋值(),编译器会将其视为定义,多文件中重复定义会引发 “多重定义” 错误。extern。

2503_90903957的博客 1185

extern 关键字说明

extern 关键字说明1. 作用1:extern "C"1.1. 扩展: 一个标准的C头文件格式(extern "C")2. 作用2:extern 变量/函数2.1 背景: 局部变量和外部(全局)变量说明2.1.1 局部变量2.1.2 全局变量2.2 extern 作用2/定义:2.2.1 注意事项1. extern int g_Int; 它是一个声明不是定义2.2.2 注意事项2. 在使用extern时候要严格对应声明时的格式2.2.3 注意事项3. extern变量声明使用规范:在*.c文件中声明了一

哈尼的博客 1715

extern关键字:C/C++跨文件编程利器

C/C++中的extern关键字用于声明变量或函数在其他文件中定义,实现多文件共享符号。在C语言中,extern可避免重复定义错误,函数默认具有extern属性,建议在头文件中声明extern变量。C++保留了这些功能,并增加了extern "C"语法来兼容C代码,关闭名称改编机制。两种语言都遵循"一次定义规则"(ODR),即变量只能在一个文件中定义。正确使用extern能有效管理多文件项目,促进模块化编程。extern "C"是C++独有的特性,专门用于C/C++混合编程场景。

弘羽 947

C++中extern关键字详解:不同情况下的使用方式

C++中extern关键字详解:不同情况下的使用方式

qq_45166271的博客 1125

extern用法详解

extern用法详解       1 基本解释   extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。   另外,extern也可用来进行链接指定。 2 问题:extern 变量   在一个源文件里定义了一个数组:char a[6];   在另外一个文件里用下列语句进行了声明:extern cha

sunyugang1234的专栏 214
上一篇: VS中,#include<>和#include“ “的区别
下一篇: C++ 防止头文件被重复包含
橱窗里的官人
博客等级 码龄5年 17粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橱窗里的官人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值