【C語言】函數定義時前加static 作用

C語言中函數定義時前加static 作用
1.作用
函數中加“static”的含義不是指存儲方式,而是指對函數的作用域僅侷限於本文件。

2.好處
使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數,是否會與其它文件中的函數同名,因爲同名也沒有關係。

3.根本原因
根本原因是C語言中同一個工程中不能有同名函數。

定義靜態函數的好處:

其他文件中可以定義相同名字的函數,不會發生衝突
靜態函數不能被工程內其他文件所用。
拓展:關於內聯函數
內聯函數是在函數的前面加“inline”,意思是將這個函數的二進制代碼直接插到程序中調用它的地方,讓編譯器不用函數名跳轉的方式來實現(原因是這樣跳來跳去比較花費時間)。

這種做法類似於宏代替。

不好的地方就是如果此函數被調用得比較頻繁的話,可能很多地方都要佔用空間,而不是跳過去執行只需要一個地方有這段代碼就行,所以說這樣做我們是用“空間”來換取了“時間”。

關於內聯函數必須加static的問題:

內聯函數一般都寫成static inline,原因是內聯函數一般要寫在.h文件中,進行函數聲明。

這個.h文件的原則是不寫函數而只寫函數名,現在寫了函數了,很多.c文件可能都會包含這個.h文件。如果不寫static,編譯的時候就會在linking過程中編譯不過,其實意思就是同一個工程中不能有相同的函數名。

參考資料:http://blog.chinaunix.net/uid-28994163-id-4333705.html
————————————————
版權聲明:本文爲CSDN博主「@chengwei」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/cw616729/article/details/95003577

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章