1、巨集的概念
巨集定義是指將乙個識別符號定義乙個字串,在源程式中該識別符號被字串替換的實現方式。巨集書寫的格式為:#define 巨集名(參數列) 巨集。
2、巨集與函式的區別
3、巨集的優缺點
(1)優點:
1)提高程式的可讀性,而且方便修改;
2)巨集只是進行簡單的字串替換,沒有引數的入棧和出棧,提高了程式的執行效率。
(2)缺點:
1)巨集不進行型別檢測,存在安全隱患;
2)因為邊界問題會使程式產生二義性;
3)巨集不支援遞迴;
4)巨集不能訪問類物件的私有成員;
5)巨集在執行的時候不可以進行除錯;
4、巨集與內聯函式的區別
(1)內聯函式在編譯時展開,巨集在預編譯時展開;
(2)編譯內聯函式可以嵌入到目標**,巨集只是進行簡單的字串替換;
(3)內聯會做型別和語法檢查,而巨集不具有這樣的功能;
(4)inline函式是函式,而巨集不是函式;
(5)巨集定義處理巨集引數時存在邊界問題(一般引數都要用括號括起來),而內聯函式定義不會出現這樣的問題。
5、內聯函式的優缺點
(1)優點:
1)inline定義的內聯函式,函式**被放在符號表中,在使用時進行替換(向巨集一樣展開),效率高。
2)類的內聯函式也是函式,編譯器在呼叫乙個內聯函式時,首先會檢查引數問題,保證型別和語義正確,向對待真正函式一樣消除隱患和侷限性。
(2)缺點
1)如果函式的**較長,使用內聯函式將消耗過多記憶體,這種情況編譯器會自動把它作為非內聯函式處理。
2)如果函式體內有迴圈,那麼執行函式**時比呼叫開銷大。
6、巨集與函式的選擇
以下情況選擇巨集,其他情況選擇函式:
(1)用巨集代表簡短的表示式時;
(2)在考慮效率的時候,可以考慮用巨集或者內聯函式;
(3)在標頭檔案保護(防止重複編譯)的時候,如:條件編譯中的#ifdef、#if defined以及assert的實現。
巨集與函式的比較
1 巨集的概念 巨集定義是指將乙個識別符號定義乙個字串,在源程式中該識別符號被字串替換的實現方式。巨集書寫的格式為 define 巨集名 參數列 巨集。2 巨集與函式的區別 3 巨集的優缺點 1 優點 1 提高程式的可讀性,而且方便修改 2 巨集只是進行簡單的字串替換,沒有引數的入棧和出棧,提高了程...
巨集函式與內聯函式比較
第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現場,並按原來儲存位址繼續執行。因此,函式呼叫要有一定的時間和空...
C 內聯函式與C語言巨集的比較
c 內聯函式 通過將內聯函式的編譯 與其它程式 內聯 起來,提高程式執行的速度。即 編譯器將使用相應的函式 替換函式呼叫。對於內聯 程式無需跳到另乙個位置處執行 然後在跳回來。因此,內聯函式的執行速度比常規函式稍快,但代價是要占用更多的記憶體。若在多個不同的地方呼叫同乙個內聯函式,則程式將包括該函式...