C語言 函式宣告前extern的用法?

2023-05-16 07:00:11 字數 2628 閱讀 1606

1樓:網友

1)別的就是指「這一個」以外的;c盤定義,d盤呼叫,原則上可以,但是麻煩,寫程式應該越簡單越好,不提倡這樣做;「別的」原則上沒有限定幾層,但是最好放在同一個資料夾,原因也說了,分開放麻煩。

2)作用相同,不完全等價。區別在哪呢?include 「*h」

int f();把「*.h」裡的所有東西都搬過來(除了f()之外可能還有其他的),那麼肯定包含有f();而extern int f();表示你明確知道你要呼叫的是「*.h」裡的f()這個函式,其它你都不需要。

這麼說,如果所有外部函式宣告時都加上extern就不需要include 「*h」標頭檔案了?」是的,但是你想想,如果你所有外部函式都要用到的話,你自己手動給所有函式加上extern還是直接一個include 「*h」哪個更方便呢。

c語言:用extern和不用extern宣告方法有什麼區別?

2樓:網友

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

1. extern修飾變數的宣告。舉例來說,如果檔案需要引用中變數int v,就可以在中宣告extern int

v,然後就可以引用變數v。這裡需要注意的是,被引用的變數v的連結屬性必須是外連結(external)的,也就是說要引用到v,不只是取決於在中宣告extern

intv,還取決於變數v本身是能夠被引用到的。這涉及到c語言的另外一個話題--變數的作用域。能夠被其他模組以extern修飾符引用到的變數通常是全域性變數。還有很重要的一點是,extern

int v可以放在中的任何地方,比如你可以在中的函式fun定義的開頭處宣告extern int

v,然後就可以引用到變數v了,只不過這樣只能在函式fun作用域中引用v罷了,這還是變數作用域的問題。對於這一點來說,很多人使用的時候都心存顧慮。好像extern宣告只能用於檔案作用域似的。

2. extern修飾函式宣告。從本質上來講,變數和函式沒有區別。

函式名是指向函式二進位制塊開頭處的指標。如果檔案需要引用b.

c中的函式,比如在中原型是int

fun(int mu),那麼就可以在中宣告extern int fun(int mu),然後就能使用fun來做任何事情。就像變數的宣告一樣,extern

int fun(int

mu)可以放在中任何地方,而不一定非要放在的檔案作用域的範圍中。

對其他模組中函式的引用,最常用的方法是包含這些函式宣告的標頭檔案。使用extern和包含標頭檔案來引用函式有什麼區別呢?extern的引用方式比包含標頭檔案要簡潔得多!

extern的使用方法是直接了當的,想引用哪個函式就用extern宣告哪個函式。這大概是kiss原則的一種體現吧!這樣做的一個明顯的好處是,會加速程式的編譯(確切的說是預處理)的過程,節省時間。

在大型c程式編譯過程中,這種差異是非常明顯的。

3. 此外,extern修飾符可用於指示c或者c++函式的呼叫規範。比如在c++中呼叫c庫函式,就需要在c++程式中用extern

c」宣告要引用的函式。這是給連結器用的,告訴連結器在連結的時候用c函式規範來連結。主要原因是c++和c程式編譯完成後在目標**中命名規則不同。

3樓:匿名使用者

是這樣的。

如果你想定義一個靜態函式。

要在函式返回值型別前加static

如果你想定義一個外部函式。

要在函式返回值型別前加extern(可省略)也就是說。

預設為extern的。

4樓:匿名使用者

用關鍵字extern說明的變數成為外部變數。

一個變數被說明為外部變數,其含義是告訴系統不必為其按一般變數那樣分配記憶體,該變數已在這一區域性的外邊定義。

外部變數一般用於由多個檔案組成的程式中,有些變數在多個檔案中被說明,但卻是同一變數,指出某一變數為外部變數就避免了重複分配記憶體。

c語言extern的用法

5樓:匿名使用者

你這裡有幾個問題我給你說下。

1,我把你的程式直接黏貼是編譯不了的,就是有許多中文字元的符號,這個要注意,所有符號要在英文格式下輸入。

2,你在main函式中並沒有呼叫num()這個函式,也就是num()函式未被執行,所以即使編譯通過也不會輸出3,而可能是0或者不確定的值。

3,再就是如果num函式在另外一個。c檔案中,你在main函式的c檔案中要對num函式進行宣告,extern int num()這個要放在main函式的外部,並且在main函式的上邊。並且對於 a 這個全域性變數也要宣告,也就是extern int a;這句。

你放在main函式中是沒問題的,但是這個就意味著a這個變數只能在 main 函式中被呼叫,而無法在main所在的c檔案中的其他函式呼叫。

6樓:匿名使用者

extern一般用於跨檔案的全域性變數上。

如果只是想在函式內部給a賦值,完全不需要用到extern。傳遞引用就可以了。

例如main()

int num(int &b)

或者傳遞指標,或者使用返回值。

7樓:o默化

你是用num裡面的複製的話 那輸出3 的也是num裡面的 a 如果想輸出最外面的那個a那麼num上面不用再定義一個a

c語言外部函式宣告與否問題,C語言函式宣告是要在主函式內部還是外部啊?

絕對是會的,每一個函式都有入口,作業系統 os 需要計算地址並且定址,然後每個子函式都有一個返回值,執行完os仍然有計算和定址,然後返回main,不過這種時間花費很小,並不比一次inta b c的運算多多少,因此不會犧牲很多時間,另外,這種微小時間的付出換來的確實程式的模組化和有序化,顯然是非常值得...

c語言void跟int宣告函式的區別

是的,可以在void函式裡面任意位置加一條語句 return 表示中斷函式並返回,如果void函式沒有返回語句,預設在 結束前返回空。當函式不用返回值時用void型別,如果呼叫函式參與運算,編譯系統能檢查出錯誤 void意思是函式沒有返回值,所以不需要用return 主函式int與void有什麼區別...

函式宣告和函式定義的關係是什麼,C 中,函式的宣告與函式的定義有什麼區別?

函式先宣告才可以被呼叫,如同變數先宣告後使用。函式的宣告也可以和函式定義分開。一個函式只可以定義一次,但是可以宣告多次。函式定義 是指對函式功能的確立,包括指定函式名,函式值型別 形參型別 函式體等,它是一個完整的 獨立的函式單位。而 函式宣告 的作用則是把函式的名字 函式型別以及形參型別 個數和順...