Inline行內函數簡單理解

dxwxb發表於2024-03-11

InLine_Function

  • How to Write it?
    example->
inline void func();
inline int sum(int v1 , int v2 );
inline void func(){

    std::cout<<"func()"<<std::endl;
}
inline int sum(int v1 ,int v2){

    return v1+v2;
}
  • 特點
    • 編譯器會將函式呼叫直接展開為函式體程式碼
  • 人話:
    • 直接將函式體裡面的計算方法直接放到函式呼叫裡,類似於宏替換。和#include 很像,但不相同。
    • 編譯後程式碼體量會變大。
  • 用途
    • 因為呼叫普通函式需要開闢棧空間,呼叫完成後要回收棧空間
    • 如果是行內函數(inline function)執行是不需要開闢棧空間,不存在函式呼叫,所以不會有開闢和回收棧空間的過程。執行起來效率較高,減少函式呼叫開銷,但是會增大程式碼體積,增加記憶體佔用
  • 什麼時候使用
    • 1.呼叫頻繁
    • 2.程式碼體積不大
  • inline是建議編譯器編譯成內聯
    • 例如遞迴函式就不會編譯成行內函數

行內函數與宏

#define add(v1,v2) v1+v2
int main(){
    int c = add(1,2);
    std::cout<<c<<std::endl;
    getchar();
    return 0;
}

<-宏替換

  • 區別:
    • 行內函數相比於宏替換,具有程式碼提示,擁有傳參能力。宏是簡單文字替換!!!
      以上內容都是孩子瞎寫的,請大佬指正。

相關文章