優點:
1.增強**的復用性。
2.提高效能。
缺點:1.不方便除錯巨集。(因為預編譯階段進行了替換)
2.導致**可讀性差,可維護性差,容易誤用。
3.沒有型別安全的檢查 。
c++有哪些技術替代巨集?
常量定義 換用const
函式定義 換用內聯函式
優點:預處理階段替換,少了函式呼叫過程開銷,**效率高
缺點:不是真正的函式,預處理階段展開,不參與編譯引數型別檢查
不方便除錯,**膨脹。
#define max(a,b) a>b?a:b
max(++a,b)
優點:編譯階段 編譯器將內聯函式展開 少了函式呼叫開銷,參與編譯,型別檢測 安全性高
缺點:**膨脹 函式不要有迴圈 遞迴
內聯函式和巨集
1.內聯函式 在c 中我們通常定義以下函式來求兩個整數的最大值 複製 如下 int max int a,int b 為這麼乙個小的操作定義乙個函式的好處有 閱讀和理解函式 max 的呼叫,要比讀一條等價的條件表示式並解釋它的含義要容易得多 如果需要做任何修改,修改函式要比找出並修改每一處等價表示式容...
內聯函式和巨集
第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個地 址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現場,並按原來 儲存位址繼續執行。因此,函式呼叫要有一定的時間...
內聯函式和巨集
內聯函式是為了提高程式執行速度的一種改進。當程式執行時,有時候需要重複呼叫乙個函式,但是因為重複呼叫這個函式,會不斷的造成函式呼叫,會不斷進棧出棧造成cpu的消耗。而內聯函式是在編譯時就將這個函式邊入進去,不用再進行位址的跳轉。但是不可避免的產生了一些 記憶體的消耗,所有有時候使用者在申請內聯時,內...