函式中加「static」的含義不是指儲存方式,而是指對函式的作用域僅侷限於本檔案。
使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名,因為同名也沒有關係。
根本原因是c語言中同乙個工程中不能有同名函式。
定義靜態函式的好處:
其他檔案中可以定義相同名字的函式,不會發生衝突
靜態函式不能被工程內其他檔案所用。
內聯函式是在函式的前面加「inline」,意思是將這個函式的二進位制**直接插到程式中呼叫它的地方,讓編譯器不用函式名跳轉的方式來實現(原因是這樣跳來跳去比較花費時間)。
這種做法類似於巨集代替。
不好的地方就是如果此函式被呼叫得比較頻繁的話,可能很多地方都要占用空間,而不是跳過去執行只需要乙個地方有這段**就行,所以說這樣做我們是用「空間」來換取了「時間」。
關於內聯函式必須加static的問題:
內聯函式一般都寫成static inline,原因是內聯函式一般要寫在.**件中,進行函式宣告。
這個.**件的原則是不寫函式而只寫函式名,現在寫了函式了,很多.c檔案可能都會包含這個.**件。如果不寫static,編譯的時候就會在linking過程中編譯不過,其實意思就是同乙個工程中不能有相同的函式名。
參考資料:
C 函式前加 的作用
c 中函式前加 是表示此函式是析構函式。析構函式介紹 1.析構函式 destructor 與建構函式相反,當物件脫離其作用域時 例如物件所在的函式已呼叫完畢 系統自動執行析構函式。析構函式往往用來做 清理善後 的工作 例如在建立物件時用new開闢了一片記憶體空間,應在退出前在析構函式中用delete...
呼叫函式時為什麼要在函式名前加「 void 」
我們知道,在定義函式時,加在函式名前的 void 表示該函式沒有返回值。但在呼叫時,在函式名前加 void 的作用又是什麼呢?最明顯的一點就是表示程式並不關心呼叫該函式後的返回值是什麼,比如函式strcpy,我們直接用 strcpy des str,src str 這樣的形式來呼叫。void str...
C 函式前加巨集表示的意思
lresult callback wndproc hwnd hwnd,uint message,wparam wparam,lparam lparam 相信大家都知道這個函式,但分析似乎比平常的函式定義多了callback。現在分析如下 lresult為返回值,實際上是long callback為巨...