今天在看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...