Re: [問題] 有關巨集的問題
※ 引述《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)
推
07/06 23:00, , 1F
07/06 23:00, 1F
推
07/07 09:34, , 2F
07/07 09:34, 2F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章