當前位置:首頁 » 編程語言 » c語言extern函數

c語言extern函數

發布時間: 2023-08-16 20:21:22

1. c語言中extern怎麼用,舉個簡單例子說明下,謝謝。

extern是外部聲明用的,用來聲明外部的函數或者變數定義。

例如,你在1.C中定義了一個函數和變數:
void fun1(void);
int a = 0;

而你要在2.c中調用 fun1(),並且蠢斗讀取a的值,
那麼需要再2.c的頭部如下外部聲明:
extern void fun1(void);
extern int a = 0;

這樣的敏檔鄭話在編譯器在編譯2.c時,不會報錯誤,而在鏈接時找橋頌fun1、a,以實現對外部函數、變數的訪問

2. extern在c語言中是什麼意思

extern關鍵字可以置於變數或者函數前,以標示變數或者函數的定義在別的文件中,提示編譯器遇到此變數和函數時在其他模塊中尋找其定義。這里起到的是聲明作用范圍的用處。

extern的另外用法是當C和C++混合編程時假如c++調用的是c源文檔定義的函數或變數,那麼要加extern來告訴編譯器用c方式命名函數:

文檔A.cpp調用a.c裡面的變數i和函數callme()

(2)c語言extern函數擴展閱讀

C語言包含的各種控制語句僅有9種,關鍵字也只有32個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。

實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。

3. C語言 extern

在C語言中,變數和函數都有數據類型和存儲類型兩個屬性,因此變數定義的一般形式是 {存儲類型 數據類型 變數名}

C語言種提供了以下四種不同的存儲類型

那麼我們所說的extern就是存儲類型的一種。extern修飾的變數存儲位置在全局靜態存儲區。
標準的定義格式: extern 類型名 變數名;

通俗來說,如果使用extern修飾了一個變數或者函數,那麼這個函數或者變數就變成了全局變數,在除定義該變數or函數的文件外仍然有效。不過需要注意的是,使用extern進行修飾是對該變數or函數進行聲明,並沒有分配內存。

如果在a.c中需要引用b.c中的int i,那麼可以在a.c中使用extern int i進行聲明。並且,能夠被其他模塊以extern修飾符引用的變數通常是全局變數。並且extern int i可以被放在a.c中的任何位置,區別只是在a.c中作用域的問題。

從本質上來說,並沒有什麼區別。函數名字本質上是一個指向二進制塊開頭處的指針。如果a.c中需要引用b.c中的函數,如b.c中原型是int fun(int mu),那麼在a.c中聲明extern int fun(int mu)那麼就可以在a.c中用fun做事。

但是對其他模塊中函數的引用,最常用的方法是包含這些函數聲明的頭文件。

那麼使用extern和包含頭文件來引用函數有什麼區別如下:
① 使用extern的引用比包含頭文件要簡介的多。extern使用直截了當,引用哪個函數直接extern進行聲明即可。這樣做的一個明顯的好處是,會加速程序的編譯(確切的說是預處理)的過程,節省時間。在大型C程序編譯過程中,這種差異是非常明顯的。
② include本質上是把include進來的這個文件原封不動的搬到當前文件中

a.c

b.c

4. C語言中extern的意思是什麼

extern關鍵字可以置於變數或者函數前,以標示變數或者函數的定義在別的文件中,提示編譯器遇到此變數和函數時在其他模塊中尋找其定義。這里起到的是聲明作用范圍的用處。

extern的另外用法是當C和C++混合編程時假如c++調用的是c源文檔定義的函數或變數,那麼要加extern來告訴編譯器用c方式命名函數:

文檔A.cpp調用a.c裡面的變數i和函數callme()

添加了extern 「C」鏈接指示後,上面的代碼就能夠正常運行了。

5. C語言 函數聲明前extern的用法

個人看法,僅供參考。
(1)別的就是指「這一個」以外的;C盤定義,D盤調用,原則上可以,但是麻煩,寫程序應該越簡單越好,不提倡這樣做;「別的」原則上沒有限定幾層,但是最好放在同一個文件夾,原因也說了,分開放麻煩。
(2)作用相同,不完全等價。區別在哪呢?include 「*.h」
int f();把「*.h」里的所有東西都搬過來(除了f()之外可能還有其他的),那麼肯定包含有f();而extern int f();表示你明確知道你要調用的是「*.h」里的f()這個函數,其它你都不需要。
「這么說,如果所有外部函數聲明時都加上extern就不需要include 「*.h」頭文件了?」是的,但是你想想,如果你所有外部函數都要用到的話,你自己手動給所有函數加上extern還是直接一個include 「*.h」哪個更方便呢

6. extern在c語言中是什麼意思

是一個修飾符。

在C語言中,修飾符extern用在變數或者函數的聲明前,用來說明「此變數/函數是在別處定義的,要在此處引用」。

extern可置於變數或者函數前,以表示變數或者函數的定義在別的文件中,提示編譯器遇到此變數或函數時,在其它模塊中尋找其定義。另外,extern也可用來進行鏈接指定。

7. C語言中,函數的隱含存儲類別是 auto 還是 extern,為什麼兩種答案我都看到過

函數的存儲類型指的是其他文件模塊可否訪問,其類別可以是extern或static。

static是指該函數只能被本源程序文件道中的模塊訪問。extern是指可被本源程序文件外的模塊訪問。

C語言中函數的存儲類型隱含為版全局的,因此默認為extern。

函數內定義的變數,默權認作用域在本函數內,即其類型是auto。

(7)c語言extern函數擴展閱讀:

C語言中提供了存儲說明符auto、register、extern、static說明的四種存儲類別。四種存儲類別說明符有兩種存儲期:自動存儲期和靜態存儲期。

其中auto和register對應自動存儲期。具有自動存儲期的變數在進入聲明該變數的程序塊時被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。在函數內部定義的變數成為局部變數。在某些C語言教材中,局部變數稱為自動變數,這就與使用可選關鍵字auto定義局部變數這一作法保持一致。

extern用在變數聲明中常常有這樣一個作用:要在*.c文件中引用另一個文件中的一個全局的變數,那就應該放在*.h中用extern來聲明這個全局變數。

extern用於變數的用法:

1、extern int a;//聲明一個全局變數a

2、int a; //定義一個全局變數a

3、extern int a =0 ;//定義一個全局變數a 並給初值。一旦給予賦值,一定是定義,定義才會分配存儲空間。(注意:經過測試在GCC中,這樣定義變數是不能通過編譯的,而在VS2013可以)

熱點內容
計算機代碼經典編程 發布:2025-02-05 19:25:09 瀏覽:756
安卓抖音怎麼換不了白色背景 發布:2025-02-05 19:11:16 瀏覽:810
安卓手機如何變成手寫 發布:2025-02-05 19:11:14 瀏覽:979
esp32搭建自己的伺服器 發布:2025-02-05 18:58:00 瀏覽:318
wampphp升級 發布:2025-02-05 18:50:53 瀏覽:920
源碼地帶 發布:2025-02-05 18:46:37 瀏覽:615
我的世界伺服器怎麼騎別人的頭 發布:2025-02-05 18:46:32 瀏覽:90
怎麼卸載ftp賬號 發布:2025-02-05 18:41:52 瀏覽:63
SQL指定的服務並未以 發布:2025-02-05 18:40:09 瀏覽:974
電腦連接不了伺服器什麼意思 發布:2025-02-05 18:34:46 瀏覽:356