#include "stdafx.h"
#include using namespace std;
//巨集函式
#define sqr(x) ((x)*(x))
//優點:內嵌到目標**,減少了函式的呼叫,闢免壓棧與出棧的開銷
//缺點:在預處理階段完成**替換,易使生成**段體積變大,易產生邏輯錯誤。
//普通函式
//int sqr(int x)
////優點:完成了某一些操作的抽象,避免了相同功能重複開發,有型別檢查
//缺點:無法避免壓棧與出棧的開消
//內聯函式
inline int sqr(int x)
#if 0
優點:避免呼叫時的額外開銷(入棧與出棧操作)有型別檢查 不易產生邏輯錯誤
代價:由於內聯函式的函式體在**段中會出現多個"副本",因此會增加**段的空間。
本質:以犧牲**段空間為代價,提高程式的執行時間的效率。
適用場景:函式體很「小」,且被「頻繁」呼叫。
#endif
int _tmain(int argc, _tchar* argv)
return 0;
}
inline 內聯函式
一 inline關鍵字用來定義乙個類的內聯函式,引入它的主要原因是用它替代c中表示式形式的巨集定義。表示式形式的巨集定義一例 define expressionname var1,var2 var1 var2 var1 var2 為什麼要取代這種形式呢,且聽我道來 1 首先談一下在c中使用這種形式巨...
inline內聯函式
技術類筆試題50 都會問巨集與inline的區別,自己去找找看?1 巨集替換發生在預編譯 2 巨集函式 如果可以這麼叫的話 替換時不會檢查引數,inline函式會檢查 3 巨集一定會發生替換,inline貌似不是強制的,編譯器想不替換也沒關係 4 巨集替換時存在著一些不可避免的陷阱 參見c trap...
inline內聯函式
一 內聯函式 內聯函式是指用inline關鍵字修飾的函式 它與普通函式所不同之處只在於函式呼叫的處理。普通 函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中 內聯函式不是在呼叫時發生執行權轉移,而是在編譯時將 函式 體 嵌入在每乙個呼叫處。編譯時類似巨集替換,使用 函式體替...