※ 引述《leicheong.bbs@bbs.sayya.org (理昌)》之銘言:
: 你舉的是針對const做最佳化的情況, 當然會這樣.
: 如果A和B本身都是用#define宣告的話, 代入D的只會是compile time運算後
: A+B的結果而已. (雖然相信有跑optimization下用const也是有相同的結果)
這個例子並不是針對 const 做最佳化的情形, 而是在 compiler time
時無法算出 const 或 #define 值的情形. 只要在 compiler time 不能
解析,使用 const 就會比較佳.
: 再說, 我從來都沒有說過在做運算式時#define比const好, 只是單純地
: 想糾正原發文者想把#define全改成const的想法. 你就不需要把我沒說
: 的都自動代入了.
這裡是回應你之前提的使用 const 會比用 #define 增加 cache miss 及會
造成執行效率低的情形, 指出這個說法是不正確的.
: Btw, 你有沒有想過, 為什麼在Managed code中M$的編譯器是把const宣告
: 自動變成#define, 而不是把#define宣告變成const?
那你有沒有想過現在 compiler 競爭這麼激烈, 如果使用 #define 能像你
所說的提高執行效率, 為什麼大部份的 compiler 都不去做這麼簡單的改變
來得到好處呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 69.236.127.197