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:"
<<"(a + b) * c:"
《二.內聯和const
首先我們來看一下內聯的定義:
以inline修飾的函式叫做內聯函式,編譯時c++編譯器會呼叫內聯函式的地方展開,沒有函式壓棧的開銷,內聯函式提公升程式執行的效率。
優點:const和內聯函式在進行編譯時不僅進行替換,而且還會進行引數型別檢測,提高了程式的安全性。內斂函式可以是普通函式,也可以是類的成員函式;函式式巨集不能作為類的成員函式。
巨集函式與內聯函式比較
第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現場,並按原來儲存位址繼續執行。因此,函式呼叫要有一定的時間和空...
內聯函式和巨集
1.內聯函式 在c 中我們通常定義以下函式來求兩個整數的最大值 複製 如下 int max int a,int b 為這麼乙個小的操作定義乙個函式的好處有 閱讀和理解函式 max 的呼叫,要比讀一條等價的條件表示式並解釋它的含義要容易得多 如果需要做任何修改,修改函式要比找出並修改每一處等價表示式容...
內聯函式和巨集
第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個地 址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現場,並按原來 儲存位址繼續執行。因此,函式呼叫要有一定的時間...