AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

深入理解 C++ 中的 extern 關鍵字

來源: 責編: 時間:2023-10-06 19:21:13 252觀看
導讀在 C++ 語言中,extern 關鍵字經常被用于聲明一個變量或函數。雖然它的用法相對簡單,但為了編寫出清晰、高效的代碼,我們需要更深入地了解其內在含義和用法。本文將全面解析 extern 關鍵字的用途和使用場景。extern 關鍵

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

QZr28資訊網——每日最新資訊28at.com

extern 關鍵字的基本用法

在 C++ 中,extern 關鍵字主要用于兩個方面:一是為了在多個文件中共享同一個變量;二是為了在一個文件中引用另一個文件中定義的函數。QZr28資訊網——每日最新資訊28at.com

extern 用于變量

當我們需要在多個文件中共享同一個全局變量時,我們可以使用 extern 關鍵字。以下是一個簡單的例子:QZr28資訊網——每日最新資訊28at.com

// 文件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 文件中使用。QZr28資訊網——每日最新資訊28at.com

extern 用于函數

類似地,extern 關鍵字也可以用于在一個文件中引用另一個文件中定義的函數。例如:QZr28資訊網——每日最新資訊28at.com

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

在這個例子中,我們在 print.cpp 文件中定義了一個函數 print_message,然后在 main.cpp 文件中通過 extern 關鍵字聲明了同名的外部函數 print_message,從而使其可以在 main.cpp 文件中調用。QZr28資訊網——每日最新資訊28at.com

extern "C" 的用法

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

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

以下是一個例子:QZr28資訊網——每日最新資訊28at.com

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

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

結論

在 C++ 語言中,extern 關鍵字是一個重要的工具,可以幫助我們在多個文件之間共享變量和函數,以及處理 C++ 代碼和 C代碼之間的鏈接問題。然而,使用 extern 關鍵字時,我們需要注意以下幾點:QZr28資訊網——每日最新資訊28at.com

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

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

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

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

標簽:
  • 熱門焦點
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時代戰略發布會結束之后,Redmi總經理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 小紅書1周漲粉49W+,我總結了小白可以用的N條漲粉筆記

    作者:黃河懂運營一條性教育視頻,被54萬人&ldquo;珍藏&rdquo;是什么體驗?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書就有超過128萬人,為她瘋狂點贊!更瘋狂的是,這
  • 雅柏威士忌多款單品價格大跌,泥煤頂流也不香了?

    來源 | 烈酒商業觀察編 | 肖海林今年以來,威士忌市場開始出現了降溫跡象,越來越多不斷暴漲的網紅威士忌也開始悄然回歸市場理性。近日,LVMH集團旗下蘇格蘭威士忌品牌雅柏(Ardbeg
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯網那些事&ldquo;起猛了,我能看得懂日語了&rdquo;。&ldquo;為什么日本人說話我能聽懂?&rdquo;&ldquo;中文不像中文,日語不像日語,但是我竟然看懂了&rdquo;&hellip;&hell
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • 聯想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯想小新Pad Pro 12.6將于秋季新品會上推出,官方按照慣例直接在發布會前給出了機型的所有參數。聯想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
Top