看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《CsAtPccu (站慄時空)》之銘言: : 最近參加一個考試,其中有一題題目如下 : 下列何者不是巨集處理器的優點 : 1. 減少程式長度 : 2. 可重複使用 : 3. 提升程式的執行效率 : 4. 使程式容易瞭解 : 答案公佈為 3 : 但我認為是 1 : 我的看法如下: : 巨集展開來後,程式會比用 function call 還大 : 因為不是用 function call,所以效率會比較好 : 不知是我的認知有錯還是答案是錯的,請問各位的看法如何 ? 以下全部是我的猜測(汗 首先, 要講優點一定要有個對照組 你假設對照組是function call 但是這題並不是要你拿macro跟function比, 因為macro跟function其實差不多..根本沒辦法選 要比較的是用macro不用macro 什麼意思呢? 這是用macro的版本: #define f(x) ((x)*(x)) int main() { cout << f(1) << ' ' << f(2) << endl; } 這是不用macro的版本: int main() { cout << ((1)*(1)) << ' ' << ((2)*(2)) << endl; } 這樣一比就會發現 1. 不用macro的code的確變長了 (x的..我根本在睜眼說瞎話XD) 2. macro可以重複使用 3. 效率不變, 經過preprocessor後兩段code是一樣的 4. 大概吧...(汗) 答案是3. -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.186.66 ※ 編輯: Fenikso 來自: 220.133.186.66 (07/06 23:00)
CsAtPccu:謝謝回答 07/06 23:00
Ebergies:只好推這篇 lol 07/07 09:34