※ 引述《yyshan (布丁珍奶加椰果)》之銘言:
> 最後,你不覺得 #define 才會讓體積變大嗎?比如說你在 header 中定義
> 了一個很大的字串,然後在許多不同的模組中使用它,這麼一來馬上就發生
> 你所說的重覆定義問題。
如果寫header的人沒有正確使用#ifndef的話, 是會有重覆定義.
不過這也只是使用者使用失當而已.
事實上你所舉的例子也是用const比較方便debug吧, 這點我也同意.
不過為效能著想, 也建議在debug完成後把這些const宣告換回#define.
至於你最後舉的問題, 這涉及#define的內容:
- 如果#define的內容是primitive type(byte, int, long等), #define
的空間使用和執行效能是必定高於const的.
- 如果#define的內容是string的話, 才會出現你說的情況. 不過也只是
體積增大了, 不會影響執行效能. (忽略loading time的話)
如原發文者最初打算那樣, 把全部#define換成const的話, 結果肯定是
弊多於利的.
btw, 其實在primitive type的時候, enum關鍵字也提供了另一種選擇.
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: ip-84-126-134-202.rev.dyxnet.com