(轉載)內聯函數inline和宏定義

(轉載)http://blog.csdn.net/chdhust/article/details/8036233
內聯函數inline和宏定義
 

內聯函數的優越性:函數

一:inline定義的類的內聯函數,函數的代碼被放入符號表中,在使用時直接進行替換(像宏定義同樣展開),沒有了調用的開銷,效率很高。spa

二:類的內斂函數是一個真正的函數。.net

三:使用內聯函數inline能夠徹底取表明達式形式的宏定義。code

 

例子:blog

Class A
{

publicint readTest()
{
    return nTest;
}

void setTest(int i);

};

inline void A::setTest(int i)
{
    nTest=i;
};

 

說明:類A的成員函數readTest()和setTest()都是內聯函數,readTest()函數的定義體被放在類聲明之中,於是readTest()自動轉換成inline函數,setTest函數的定義體在類聲明以外,所以要加上inline關鍵字。get

總結inline函數與宏定義的區別:編譯

一、內斂函數在編譯時展開,而宏是在預編譯時就展開了class

二、在編譯時內斂函數能夠直接被嵌入到目標函數代碼中,而宏只是一個簡單的文本替換效率

三、內斂函數能夠完成諸如類型的檢測、語句是否正確等編譯功能,宏就不具有這種功能總結

四、宏不是函數,而inline函數是函數

五、宏在定義時要當心處理宏參數,(通常狀況是把參數用括弧括起來)。

相關文章
相關標籤/搜索