日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

深入理解 C++ 中的 extern 關(guān)鍵字

來源: 責(zé)編: 時(shí)間:2023-10-06 19:21:13 280觀看
導(dǎo)讀在 C++ 語言中,extern 關(guān)鍵字經(jīng)常被用于聲明一個(gè)變量或函數(shù)。雖然它的用法相對(duì)簡(jiǎn)單,但為了編寫出清晰、高效的代碼,我們需要更深入地了解其內(nèi)在含義和用法。本文將全面解析 extern 關(guān)鍵字的用途和使用場(chǎng)景。extern 關(guān)鍵

在 C++ 語言中,extern 關(guān)鍵字經(jīng)常被用于聲明一個(gè)變量或函數(shù)。雖然它的用法相對(duì)簡(jiǎn)單,但為了編寫出清晰、高效的代碼,我們需要更深入地了解其內(nèi)在含義和用法。本文將全面解析 extern 關(guān)鍵字的用途和使用場(chǎng)景。JqT28資訊網(wǎng)——每日最新資訊28at.com

JqT28資訊網(wǎng)——每日最新資訊28at.com

extern 關(guān)鍵字的基本用法

在 C++ 中,extern 關(guān)鍵字主要用于兩個(gè)方面:一是為了在多個(gè)文件中共享同一個(gè)變量;二是為了在一個(gè)文件中引用另一個(gè)文件中定義的函數(shù)。JqT28資訊網(wǎng)——每日最新資訊28at.com

extern 用于變量

當(dāng)我們需要在多個(gè)文件中共享同一個(gè)全局變量時(shí),我們可以使用 extern 關(guān)鍵字。以下是一個(gè)簡(jiǎn)單的例子:JqT28資訊網(wǎng)——每日最新資訊28at.com

// 文件1: main.cppextern int shared_var;  // 聲明一個(gè)外部整型變量int main() {    shared_var = 10;  // 使用外部變量    return 0;}// 文件2: shared.cppint shared_var = 0;  // 定義一個(gè)全局整型變量

在上述代碼中,我們?cè)?shared.cpp 文件中定義了一個(gè)全局變量 shared_var,然后在 main.cpp 文件中通過 extern 關(guān)鍵字聲明了同名的外部變量 shared_var,從而使其可以在 main.cpp 文件中使用。JqT28資訊網(wǎng)——每日最新資訊28at.com

extern 用于函數(shù)

類似地,extern 關(guān)鍵字也可以用于在一個(gè)文件中引用另一個(gè)文件中定義的函數(shù)。例如:JqT28資訊網(wǎng)——每日最新資訊28at.com

// 文件1: main.cppextern void print_message();  // 聲明一個(gè)外部函數(shù)int main() {    print_message();  // 調(diào)用外部函數(shù)    return 0;}// 文件2: print.cpp#include <iostream>void print_message() {  // 定義一個(gè)函數(shù)    std::cout << "Hello, World!" << std::endl;}

在這個(gè)例子中,我們?cè)?print.cpp 文件中定義了一個(gè)函數(shù) print_message,然后在 main.cpp 文件中通過 extern 關(guān)鍵字聲明了同名的外部函數(shù) print_message,從而使其可以在 main.cpp 文件中調(diào)用。JqT28資訊網(wǎng)——每日最新資訊28at.com

extern "C" 的用法

除了上述用法外,extern 關(guān)鍵字還有一個(gè)重要的用途,那就是配合 "C" 使用,來處理 C++ 代碼和 C 代碼之間的鏈接問題。JqT28資訊網(wǎng)——每日最新資訊28at.com

由于 C++ 支持函數(shù)重載,所以在編譯階段,編譯器會(huì)對(duì)函數(shù)名進(jìn)行改編(mangling),以區(qū)分具有相同名字但參數(shù)類型不同的函數(shù)。然而,C 語言不支持函數(shù)重載,也就沒有這個(gè)改編過程。因此,如果我們想在 C++ 代碼中調(diào)用 C 代碼,或者在 C 代碼中調(diào)用 C++ 代碼,就需要用到 extern "C"。JqT28資訊網(wǎng)——每日最新資訊28at.com

以下是一個(gè)例子:JqT28資訊網(wǎng)——每日最新資訊28at.com

// 文件1: main.cpp (C++代碼)extern "C" void print_message();  // 使用 extern "C" 聲明一個(gè)外部函數(shù)int main() {    print_message();  // 調(diào)用外部函數(shù)    return 0;}// 文件2: print.c (C代碼)#include <stdio.h>void print_message() {  // 定義一個(gè)函數(shù)    printf("Hello, World!/n");}

這個(gè)例子和前一個(gè)例子類似,但有一個(gè)重要的區(qū)別:print.c 是用 C 語言編寫的,而 main.cpp 是用 C++ 編寫的。因此,我們需要用 extern "C" 來聲明 print_message 函數(shù),以確保 C++ 編譯器能正確鏈接到 C 語言編寫的 print_message 函數(shù)。JqT28資訊網(wǎng)——每日最新資訊28at.com

結(jié)論

在 C++ 語言中,extern 關(guān)鍵字是一個(gè)重要的工具,可以幫助我們?cè)诙鄠€(gè)文件之間共享變量和函數(shù),以及處理 C++ 代碼和 C代碼之間的鏈接問題。然而,使用 extern 關(guān)鍵字時(shí),我們需要注意以下幾點(diǎn):JqT28資訊網(wǎng)——每日最新資訊28at.com

  • 在聲明 extern 變量或函數(shù)時(shí),需要確保其在其他地方已經(jīng)被定義過。
  • 在使用 extern "C" 時(shí),需要確保所引用的 C 代碼不包含任何 C++ 特有的語法或特性。
  • 只有這樣,我們才能充分利用 extern 關(guān)鍵字,編寫出高效、清晰的代碼。

本文鏈接:http://www.www897cc.com/showinfo-26-12160-0.html深入理解 C++ 中的 extern 關(guān)鍵字

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 編程新手?跟著這個(gè)教程,用Python畫出小豬佩奇

下一篇: 一文掌握Python冒泡排序:提升你的排序技能!

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 中興AX5400Pro+上手體驗(yàn):再升級(jí) 雙2.5G網(wǎng)口+USB 3.0這次全都有

    2021年11月的時(shí)候,中興先后發(fā)布了兩款路由器產(chǎn)品,中興AX5400和中興AX5400 Pro,從產(chǎn)品命名上就不難看出這是隸屬于同一系列的,但在外觀設(shè)計(jì)上這兩款產(chǎn)品可以說是完全沒一點(diǎn)關(guān)系
  • 石頭智能洗地機(jī)A10 Plus體驗(yàn):雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請(qǐng)假懶人而生的石頭科技在近日又帶來了自己的全新旗艦新品,石頭智能洗地機(jī)A10 Plus。從這個(gè)產(chǎn)品名上就不難看出,這次石頭推出的并不是常見的掃地機(jī)器
  • 分享六款相見恨晚的PPT模版網(wǎng)站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網(wǎng)站旨在為全球Office用戶提供豐富的高品質(zhì)原創(chuàng)PPT模板、實(shí)用文檔、數(shù)據(jù)圖表及個(gè)性化定制服務(wù)。優(yōu)點(diǎn):OfficePLUS是微軟官方網(wǎng)站,囊括PPT模板、Word模
  • 一個(gè)注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!

    場(chǎng)景碼猿慢病云管理系統(tǒng)中其實(shí)高并發(fā)的場(chǎng)景不是很多,沒有必要每個(gè)接口都去考慮并發(fā)高的場(chǎng)景,比如添加住院患者的這個(gè)接口,具體的業(yè)務(wù)代碼就不貼了,業(yè)務(wù)偽代碼如下:圖片上述代碼有
  • 為什么你不應(yīng)該使用Div作為可點(diǎn)擊元素

    按鈕是為任何網(wǎng)絡(luò)應(yīng)用程序提供交互性的最常見方式。但我們經(jīng)常傾向于使用其他HTML元素,如 div span 等作為 clickable 元素。但通過這樣做,我們錯(cuò)過了許多內(nèi)置瀏覽器的功能。
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時(shí)候了!學(xué)弟,最近學(xué)習(xí)的怎么樣啊 了不起學(xué)弟:最近學(xué)習(xí)的還不錯(cuò),每天都在學(xué)習(xí),每天都在進(jìn)步! 了不起:那你最近學(xué)習(xí)的什么呢? 了不起學(xué)弟:最近在學(xué)習(xí)C
  • 當(dāng)家的盒馬,加速謀生

    來源 | 價(jià)值星球Planet作者 | 歸去來自己&ldquo;當(dāng)家&rdquo;的盒馬,開始加速謀生了。據(jù)盒馬官微消息,盒馬計(jì)劃今年開放生鮮供應(yīng)鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經(jīng)與
  • iQOO 11S評(píng)測(cè):行業(yè)唯一的200W標(biāo)準(zhǔn)版旗艦

    【Techweb評(píng)測(cè)】去年底,iQOO推出了“電競(jìng)旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),該機(jī)不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競(jìng)
  • iQOO 11S新品發(fā)布會(huì)

    iQOO將在7月4日19:00舉行新品發(fā)布會(huì),推出杭州亞運(yùn)會(huì)電競(jìng)賽事官方用機(jī)iQOO 11S。
Top 主站蜘蛛池模板: 巨鹿县| 伊川县| 连州市| 襄樊市| 丹寨县| 麻城市| 渑池县| 临沭县| 乌兰浩特市| 大关县| 金坛市| 额尔古纳市| 永寿县| 皮山县| 中方县| 昌平区| 霍邱县| 福海县| 夹江县| 红桥区| 固镇县| 鱼台县| 宁武县| 泰和县| 高唐县| 巴林左旗| 获嘉县| 日喀则市| 大城县| 新竹市| 应用必备| 定州市| 英德市| 敖汉旗| 宁城县| 石棉县| 侯马市| 南城县| 嘉黎县| 万安县| 盐亭县|