当前位置:首页 > 科技  > 软件

【编程学习进阶之路】Extern和Export的作用及区别

来源: 责编: 时间:2023-10-13 14:35:43 371观看
导读在编程中,变量的声明和定义是两个重要的概念,它们在不同情况下有着不同的作用。本文将探讨extern和export关键字的作用,以及它们之间的区别。声明与定义在编程中,变量的声明通常指的是告诉编译器一个变量的存在,但不分配实

在编程中,变量的声明和定义是两个重要的概念,它们在不同情况下有着不同的作用。本文将探讨extern和export关键字的作用,以及它们之间的区别。St628资讯网——每日最新资讯28at.com

声明与定义

在编程中,变量的声明通常指的是告诉编译器一个变量的存在,但不分配实际的内存空间。而变量的定义则是在声明的基础上为变量分配内存空间。这两者的区别在于是否需要为变量分配存储空间。St628资讯网——每日最新资讯28at.com

extern关键字

extern关键字通常用于声明一个变量或函数,告诉编译器该变量或函数是在其他文件中定义的。这意味着变量的实际定义存在于其他地方,而当前文件只是在这里引用它。例如,如果在一个C或C++程序中使用extern int a,那么编译器会知道变量a是在另一个文件中定义的。St628资讯网——每日最新资讯28at.com

extern关键字通常用于引用全局变量或函数,以实现跨文件的共享。这可以使程序更模块化,减少代码的重复编写。St628资讯网——每日最新资讯28at.com

export关键字(C++中新增)

在C++中,出现了一个新的关键字export,它与extern有些相似,但用于模板的情况。export关键字用于实现模板函数的外部调用。在模板函数的实现时,可以在其前面加上export关键字,这样其他文件包含相应的头文件后就可以使用该模板。St628资讯网——每日最新资讯28at.com

export的主要作用是将模板的定义与实现分离,使得模板可以在不同的编译单元中共享。这提供了更大的灵活性和可维护性,特别是在大型项目中。St628资讯网——每日最新资讯28at.com

extern "C"的用法

在C语言中,对于外部函数的声明通常使用extern关键字,而C语言不支持extern "C"声明。在C语言的头文件中,只能将外部函数指定为extern类型,而不能使用extern "C"。如果在C文件中包含了extern "C",则会导致编译语法错误。St628资讯网——每日最新资讯28at.com

因此,extern "C"通常用于C++程序或其相关头文件中,以便与C语言的函数进行交互,确保函数的名称和调用约定与C语言兼容。St628资讯网——每日最新资讯28at.com

在编程中,extern用于引用在其他文件中定义的变量或函数,而export用于模板函数的外部调用,提供了更大的模块化和可维护性。同时,extern "C"用于与C语言函数进行交互,确保兼容性。了解这些关键字的作用和用法可以帮助程序员更好地管理和组织代码,使程序更加清晰和可维护。St628资讯网——每日最新资讯28at.com

explicit的作用

explicit阻止隐式转换St628资讯网——每日最新资讯28at.com

隐式转换St628资讯网——每日最新资讯28at.com

String s1 = "hello";//进行隐式转换,等价于String s1 = String("hello");

explicit阻止隐式转换St628资讯网——每日最新资讯28at.com

class Test1{public:Test1(int n){ num = n }private:int num;}class Test2{public:explicit Test2(int n){ num = n }private:int num;}int main(){Test1 t1 = 1; //正确,隐式转换Test2 t2 = 1;//错误,禁止隐式转换Test2 t2(1); //正确,可与显示调用}

本文链接:http://www.28at.com/showinfo-26-13263-0.html【编程学习进阶之路】Extern和Export的作用及区别

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 微服务部署—使用Docker安装Nginx并配置免费的SSL证书详解

下一篇: 提升代码重用性:模板设计模式在实际项目中的应用

标签:
  • 热门焦点
  • 6月安卓手机性能榜:vivo/iQOO霸占旗舰排行榜前三

    2023年上半年已经正式过去了,我们也迎来了安兔兔V10版本,在新的骁龙8Gen3和天玑9300发布之前,性能榜的榜单大体会以骁龙8Gen2和天玑9200+为主,至于那颗3.36GHz的骁龙8Gen2领先
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

    在 Elasticsearch 中,function_score 可以让我们在查询的同时对搜索结果进行自定义评分。function_score 提供了一系列的参数和函数让我们可以根据需求灵活地进行设置。近期
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 零售大模型“干中学”,攀爬数字化珠峰

    文/侯煜编辑/cc来源/华尔街科技眼对于绝大多数登山爱好者而言,攀爬珠穆朗玛峰可谓终极目标。攀登珠峰的商业路线有两条,一是尼泊尔境内的南坡路线,一是中国境内的北坡路线。相
  • 2023年,我眼中的字节跳动

    此时此刻(2023年7月),字节跳动从未上市,也从未公布过任何官方的上市计划;但是这并不妨碍它成为中国最受关注的互联网公司之一。从2016-17年的抖音强势崛起,到2018年的“头腾
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 自研Exynos回归!三星Galaxy S24系列将提供Exynos和骁龙双版本

    年初,全新的三星Galaxy S23系列发布,包含Galaxy S23、Galaxy S23+和Galaxy S23 Ultra三个版本,全系搭载超频版骁龙8 Gen 2,虽同样采用台积电4nm工艺制
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
Top