static inline的內聯函數,一般情況下不會產生函數本身的代碼,而是全部被嵌入在被調用的地方。如果不加static,則表示該函數有可能會被其他編譯單元所調用,所以一定會產生函數本身的代碼。所以加了static,一般可令可執行文件變小。內核裏一般見不到只用inline的情況,而都是使用static inline。
inline
關鍵字inline表明要優化函數的可執行代碼,這可以通過將函數的代碼合併到調用程序的代碼中來實現。Linux內核使用的inline函數大多被定義爲static 類型。一個"static inline"函數促使編譯程序嘗試着將其代碼插入到所有調用它的程序中。
這一合併能夠免除函數調用的任何開銷,#define語句也可以排除額外的函數調用。
另外,使用inline會增加二進制映像的大小,而這會降低訪問CPU高速緩存的速度,所以不能在所有的函數定義中使用它。