static inline

inline函數從源代碼層看,有函數的結構,而在編譯後,卻不具備函數的性質。編譯時,類似宏替換,使用函數體替換調用處的函數名。一般在代碼中用inline修飾,但是能否形成內聯函數,需要看編譯器對該函數定義的具體處理。
用inline的函數比一般函數調用速度快, 但會佔用更多內存空間


static 函數 不能被外部文件調用的,只能被在本文件調用的


如果static函數時一個類的成員函數, 那這個函數可以在沒有類的實例的情況下被調用

static inline的內聯函數,一般情況下不會產生函數本身的代碼,而是全部被嵌入在被調用的地方。如果不加static,則表示該函數有可能會被其他編譯單元所調用,所以一定會產生函數本身的代碼。所以加了static,一般可令可執行文件變小。內核裏一般見不到只用inline的情況,而都是使用static inline。


這一合併能夠免除函數調用的任何開銷,#define語句也可以排除額外的函數調用。
另外,使用inline會增加二進制映像的大小,而這會降低訪問CPU高速緩存的速度,所以不能在所有的函數定義中使用它。

發佈了18 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章