c++內聯函數實質是編譯階段帶有 inline函數在函數調用點直接展開,以代碼膨脹的代價替換函數調用的開銷,
因此內聯函數不存在調用過程。
*****注意****
inline 修飾的函數聲明是無效的;
inline 修飾的函數只在本文件內部有效;
inline 在debug版本下無效的;
遞歸函數,循環函數不能設爲內聯函數,inline 只是建議編譯器在優化代碼;
***************
#define max(a,b) a>b ? a:b
int avg(int a,int b=10);
inline int avg(int a ,int b)
{
return (a+b)/2;
}
int main()
{
int tem = max(10,33)+2;
avg(10,20);
return 0;
}
inline內聯函數、 static 靜態函數、宏定義之間存在那些差別?
static函數有符號生成,inline函數沒有符號生成;
static函數有函數調用,inline函數沒有函數調用;
宏定義在預編譯期間進行字符替換,沒有類型檢查和安全檢查,不能調試;
內聯函數有類型檢查和安全檢查,可以調試;