网易首页 > 网易号 > 正文 申请入驻

深入理解 C++ 中的 extern 关键字

0
分享至

在 C++ 语言中,extern 关键字经常被用于声明一个变量或函数。虽然它的用法相对简单,但为了编写出清晰、高效的代码,我们需要更深入地了解其内在含义和用法。本文将全面解析 extern 关键字的用途和使用场景。

extern 关键字的基本用法

在 C++ 中,extern 关键字主要用于两个方面:一是为了在多个文件中共享同一个变量;二是为了在一个文件中引用另一个文件中定义的函数。

extern 用于变量

当我们需要在多个文件中共享同一个全局变量时,我们可以使用 extern 关键字。以下是一个简单的例子:

// 文件1: main.cppextern int shared_var; // 声明一个外部整型变量int main() { shared_var = 10; // 使用外部变量 return 0;}// 文件2: shared.cppint shared_var = 0; // 定义一个全局整型变量

在上述代码中,我们在 shared.cpp 文件中定义了一个全局变量 shared_var,然后在 main.cpp 文件中通过 extern 关键字声明了同名的外部变量 shared_var,从而使其可以在 main.cpp 文件中使用。

extern 用于函数

类似地,extern 关键字也可以用于在一个文件中引用另一个文件中定义的函数。例如:

// 文件1: main.cppextern void print_message(); // 声明一个外部函数int main() { print_message(); // 调用外部函数 return 0;}// 文件2: print.cpp#include void print_message() { // 定义一个函数 std::cout << "Hello, World!" << std::endl;}

在这个例子中,我们在 print.cpp 文件中定义了一个函数 print_message,然后在 main.cpp 文件中通过 extern 关键字声明了同名的外部函数 print_message,从而使其可以在 main.cpp 文件中调用。

extern "C" 的用法

除了上述用法外,extern 关键字还有一个重要的用途,那就是配合 "C" 使用,来处理 C++ 代码和 C 代码之间的链接问题。

由于 C++ 支持函数重载,所以在编译阶段,编译器会对函数名进行改编(mangling),以区分具有相同名字但参数类型不同的函数。然而,C 语言不支持函数重载,也就没有这个改编过程。因此,如果我们想在 C++ 代码中调用 C 代码,或者在 C 代码中调用 C++ 代码,就需要用到 extern "C"。

以下是一个例子:

// 文件1: main.cpp (C++代码)extern "C" void print_message(); // 使用 extern "C" 声明一个外部函数int main() { print_message(); // 调用外部函数 return 0;}// 文件2: print.c (C代码)#include void print_message() { // 定义一个函数 printf("Hello, World!\");}

这个例子和前一个例子类似,但有一个重要的区别:print.c 是用 C 语言编写的,而 main.cpp 是用 C++ 编写的。因此,我们需要用 extern "C" 来声明 print_message 函数,以确保 C++ 编译器能正确链接到 C 语言编写的 print_message 函数。

结论

在 C++ 语言中,extern 关键字是一个重要的工具,可以帮助我们在多个文件之间共享变量和函数,以及处理 C++ 代码和 C代码之间的链接问题。然而,使用 extern 关键字时,我们需要注意以下几点:

  1. 在声明 extern 变量或函数时,需要确保其在其他地方已经被定义过。
  2. 在使用 extern "C" 时,需要确保所引用的 C 代码不包含任何 C++ 特有的语法或特性。

只有这样,我们才能充分利用 extern 关键字,编写出高效、清晰的代码。

#暑期创作大赛#

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
记者:阿莫林执教曼联是三输,葡体、曼联和阿莫林都输了

记者:阿莫林执教曼联是三输,葡体、曼联和阿莫林都输了

直播吧
2024-12-27 06:07:13
广东人终于忍无可忍,开始讲粗口

广东人终于忍无可忍,开始讲粗口

茂名圈
2024-12-27 00:11:48
美军舰击落大黄蜂战机,雷达问题彻底暴露:因中国断供,升级无望

美军舰击落大黄蜂战机,雷达问题彻底暴露:因中国断供,升级无望

胖福的小木屋
2024-12-26 00:29:18
北京一空姐被银行行长追求,嫁给他4年才发现丈夫真实身份

北京一空姐被银行行长追求,嫁给他4年才发现丈夫真实身份

小哥很OK
2024-09-17 17:45:21
男生去同学家玩,不慎进到了同学妈妈的房间,却看到了她的另一面

男生去同学家玩,不慎进到了同学妈妈的房间,却看到了她的另一面

凯裕说故事
2024-12-25 16:10:14
1945年夏天,日本女兵脱光衣服洗澡,突然一个中国男人来到了河边

1945年夏天,日本女兵脱光衣服洗澡,突然一个中国男人来到了河边

阿器谈史
2024-12-25 11:25:39
青岛李沧区原区长调离山东

青岛李沧区原区长调离山东

鲁中晨报
2024-12-26 19:28:06
关于小米集团的春节假期福利与年终奖

关于小米集团的春节假期福利与年终奖

互联网坊间八卦
2024-12-26 21:01:33
美英法德集体失声!俄罗斯炸毁北约国家大使馆,西方暴露软肋

美英法德集体失声!俄罗斯炸毁北约国家大使馆,西方暴露软肋

听风者说
2024-12-26 20:58:59
老公出国后,我偷偷体验了一次特殊的VR游戏,没想到直接沦陷了

老公出国后,我偷偷体验了一次特殊的VR游戏,没想到直接沦陷了

亲爱的落落
2024-10-30 16:49:17
读了武志红才重新认识琼瑶,原来不是平鑫涛太渣,而是他太好了

读了武志红才重新认识琼瑶,原来不是平鑫涛太渣,而是他太好了

杯子叨叨
2024-12-26 19:26:40
也门军方猛攻胡塞武装!从叙利亚撤出的俄军船只沉没地中海

也门军方猛攻胡塞武装!从叙利亚撤出的俄军船只沉没地中海

项鹏飞
2024-12-24 20:15:56
平安夜暴乱?!紧急停飞所有航班,股价暴跌超5%

平安夜暴乱?!紧急停飞所有航班,股价暴跌超5%

澳洲红领巾
2024-12-26 13:48:05
多出一个以色列!中国GDP多了3.4万亿,增加到129.4万亿

多出一个以色列!中国GDP多了3.4万亿,增加到129.4万亿

壹号股权
2024-12-26 18:56:27
俄方没想到:冻结俄几千亿的西方,连中方船只都不敢上,乖乖放行

俄方没想到:冻结俄几千亿的西方,连中方船只都不敢上,乖乖放行

风华讲史
2024-12-26 06:54:43
父母离婚18年后,儿子收到母亲留给他的上海小洋房,推开门却愣住

父母离婚18年后,儿子收到母亲留给他的上海小洋房,推开门却愣住

纸鸢奇谭
2024-12-25 21:58:41
为何大家都对1932年的宁都会议讳莫如深?最主要的原因有2个

为何大家都对1932年的宁都会议讳莫如深?最主要的原因有2个

振华观史
2024-12-26 16:11:14
判若两队!勇士开局12胜3负 近期3胜11负!下一场打苦主快船

判若两队!勇士开局12胜3负 近期3胜11负!下一场打苦主快船

直播吧
2024-12-26 13:47:17
中央决定:单忠德同志任国家国防科技工业局党组书记,免去张克俭同志国家国防科技工业局党组书记职务

中央决定:单忠德同志任国家国防科技工业局党组书记,免去张克俭同志国家国防科技工业局党组书记职务

新京报政事儿
2024-12-26 19:34:10
此前与马晓晴传绯闻!特鲁姆普:落户中国香港最主要原因是女朋友

此前与马晓晴传绯闻!特鲁姆普:落户中国香港最主要原因是女朋友

直播吧
2024-12-26 09:35:21
2024-12-27 06:40:49
鲨鱼编程 incentive-icons
鲨鱼编程
懂点技术,懂点编程
441文章数 156关注度
往期回顾 全部

科技要闻

小米正搭建GPU万卡集群,大力投入AI大模型

头条要闻

5名中国游客在挪威大巴车祸中受轻伤

头条要闻

5名中国游客在挪威大巴车祸中受轻伤

体育要闻

再见,中超最后的超级巨星

娱乐要闻

57岁王祖贤分享近照,状态太好又被质疑整容

财经要闻

69亿订单"消失",卓然股份隐藏了什么?

汽车要闻

新物种iCAR V23的“尤里卡时刻”

态度原创

亲子
本地
艺术
游戏
公开课

亲子要闻

男生测试小孩哥力度有多大,结果在最用力的时候抽手。

本地新闻

好吃潮州|尝一口,这里的美食有点“潮”

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

《饿狼传说 City of the Wolves》制作人专访:狼之复苏"/> 主站 商城 论坛 自运营 登录 注册 《饿狼传说 City of the ...

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版