內聯函式(巨集定義的替代品)

2021-09-10 13:03:51 字數 626 閱讀 1105

內聯函式

內聯函式由inlline標明,例如inline double square(double x)通常用它來代替函式原型。

它的作用是,在編譯的時候,將呼叫函式部分替換成函式的**,這樣就不用 編譯器記下當前位址,將引數存入堆疊,調到函式定義位址,拿出引數進行運算,(將return值放入堆疊,)返回記下的當前位址(,取出return值) 這一系列操作。

由此可見,它的優勢在於,節省了程式反覆跳轉的消耗,它比一般的程式速度更快;不過,它也有缺點:如果乙個函式很複雜,那麼內聯函式將占用更多記憶體。此外,對於基於c的編譯系統,內聯函式的使用可能大大增加編譯時間,因為每個呼叫該函式的地方都需要替換成函式體,**量的增加也同時帶來了潛在的編譯時間的增加。

由上述內聯函式特性,它適用場合應該是:該函式**執行時間很短,而且一般能在一行內寫完原型(不然,多行函式用內**感覺不太合適)。

內聯函式和巨集有些類似,但是內聯函式是按值傳遞的,而巨集只是單純的語句替換。比如square(1 + 2 );內聯函式就是(1 + 2) * (1 + 2),而巨集則是1 + 2 * 1 + 2,這顯然是錯誤的。

這個一般是原始碼裡會用到,主要是看得懂是什麼東西就行了。

Tmux GNU Screen 的替代品

12十 2010 對於 sa 來講,tmux 可以稱得上為神器。這是乙個可以在終端裡開啟多視窗的工具,它由 openbsd 團隊開發維護,是 openbsd 的基礎系統軟體之一,基於 bsd 許可證發布,可以稱之為 gnu screen 的 bsd 替代版。除了 openbsd 外,它也可執行於 l...

陣列的替代品

模板類vector和array是陣列的替代品。vector是一種動態陣列,使用堆分配記憶體,可以增 刪 改 查,缺點是效率低。include.using namespace std std vectortemp int n cin n std vectortemp1 n 建立n個原始的陣列vecto...

yarn npm的替代品

yarn的簡介 yarn是facebook發布的一款取代npm的包管理工具。yarn的安裝 npm install g yarn 檢視版本 yarn versionyarn config set registry g yarn config set sass binary site gyarn的常用...