static inline內聯函式

2021-06-27 06:43:19 字數 542 閱讀 4010

今天在看hal層的標頭檔案的時候,看到static inline int sensors_open,

對inline有些不了解,在這記錄一下內聯函式有些類似於巨集。內聯函式的

**會被直接嵌入在它被呼叫的地方,呼叫幾次就嵌入幾次,沒有使用call

指令。這樣省去了函式呼叫時的一些額外開銷,比如儲存和恢復函式返回位址

等,可以加快速度。不過呼叫次數多的話,會使可執行檔案變大,這樣會降低

速度。相比起巨集來說,核心開發者一般更喜歡使用內                聯函式。因為

內聯函式沒有長度限制,格式限制。編譯器還可以檢查函式呼叫方式,以防止

其被誤用。static inline的內聯函式,一般情況下不會產生函式本身的**,

而是全部被嵌入在被呼叫的地方。如果不加                static,則表示該函式

有可能會被其他編譯單元所呼叫,所以一定會產生函式本身的**。所以加了

static,一般可令可執行檔案變小。核心裡一般見不到只用inline的情況,而

都是使用static inline。

static inline內聯函式

static inline的內聯函式,一般情況下不會產生函式本身的 而是全部被嵌入在被呼叫的地方。如果不加static,則表示該函式有可能會被其他編譯單元所呼叫,所以一定會產生函式本身的 所以加了static,一般可令可執行檔案變小。核心裡一般見不到只用inline的情況,而都是使用static i...

static inline內聯函式剖析

內聯函式有些類似於巨集。內聯函式的 會被直接嵌入在它被呼叫的地方,呼叫幾次就嵌入幾次,沒有使用call指令。這樣省去了函式呼叫時的一些額外開銷,比如儲存和恢復函式返回位址等,可以加快速度。static inline的內聯函式,一般情況下不會產生函式本身的 而是全部被嵌入在被呼叫的地方。如果不加sta...

內聯函式,建構函式,靜態函

inline,static,constructor三種函式都不能帶有virtual關鍵字。inline是編譯時展開,必須有實體 static屬於class自己的,也必須有實體 virtual函式基於vtable 記憶體空間 constructor函式如果是virtual的,呼叫時也需要根據vtabl...