宏和內聯的比較

c++中強制建議用const替代宏常量,用內聯函數替代宏函數,這是爲何?

一.宏
首先我們來看下宏的優缺點:
優點:增強代碼的複用性,提高性能
缺點:不方便調試(因爲在預編譯階段就進行了替換)
可讀性差,可維護性差,容易誤用。
沒有類型安全的檢測。

例:

#define ADD( a, b ) a + b
void Test ()
{
     int a = 2;
     int b = 3;
     int c = 4;
     int ret = ADD( a, b );
     cout<<"a + b:" <<ret<< endl;
     ret = ADD (a, b) * c ;
     cout<<"(a + b) * c:" <<ret<< endl;
}

二.內聯和const
首先我們來看一下內聯的定義:
以inline修飾的函數叫做內聯函數,編譯時C++編譯器會調用內聯函數的地方展開,沒有函數壓棧的開銷,內聯函數提升程序運行的效率。

優點:const和內聯函數在進行編譯時不僅進行替換,而且還會進行參數類型檢測,提高了程序的安全性。內斂函數可以是普通函數,也可以是類的成員函數;函數式宏不能作爲類的成員函數。

發佈了49 篇原創文章 · 獲贊 11 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章