※ 引述《leicheong.bbs@bbs.sayya.org (理昌)》之銘言:
> 「把所有#define都轉成const是一種錯誤的想法」而「不是」
可是你之前講的理由已經不成立了
還有什麼新的論點嗎?
即使是你所說的 .NET
他在語言層次上提供的也是 const 而不是 #define
原因在於型別安全跟 scope 等 #define 不具有的優點
你說他在換成中間碼的時候用的是實值直套
說到底,那也是編譯的一種最佳化
C/C++ 沒辦法預設提供這種最佳化的原因是使用者可能對 const 取址
這時 const variable 就必須擁有實際位址
最佳化的時候 compiler 如果發現一個 const 不需要真正擁有位址,那該值就會被直套
.NET 沒有用到指標,所以沒有這個問題
寫 unmanaged code 對 const 取址的時候 .NET 一樣沒辦法作這個最佳化的
到底 #define 還有什麼優點?
--
To iterate is human, to recurse is divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不 yoco.Dorm-GD2.NCTU.edu.tw海