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