※ 引述《leicheong (理昌)》之銘言:
> ※ 引述《yyshan (布丁珍奶加椰果)》之銘言:
> > 最後,你不覺得 #define 才會讓體積變大嗎?比如說你在 header 中定義
> > 了一個很大的字串,然後在許多不同的模組中使用它,這麼一來馬上就發生
> > 你所說的重覆定義問題。
> 如果寫header的人沒有正確使用#ifndef的話, 是會有重覆定義.
> 不過這也只是使用者使用失當而已.
> 事實上你所舉的例子也是用const比較方便debug吧, 這點我也同意.
> 不過為效能著想, 也建議在debug完成後把這些const宣告換回#define.
> 至於你最後舉的問題, 這涉及#define的內容:
> - 如果#define的內容是primitive type(byte, int, long等), #define
> 的空間使用和執行效能是必定高於const的.
#define A B 會做的事情只是在 source code 中把 A 字串換成 B 字串,
如此沒有分 type 吧...
> - 如果#define的內容是string的話, 才會出現你說的情況. 不過也只是
> 體積增大了, 不會影響執行效能. (忽略loading time的話)
> 如原發文者最初打算那樣, 把全部#define換成const的話, 結果肯定是
> 弊多於利的.
> btw, 其實在primitive type的時候, enum關鍵字也提供了另一種選擇.
如果 #define A 100 和 const int A = 100; 比起來,
#define 比較快,那意思應該是說,兩者翻譯出來的組語程式碼,
立即定址會比直接定址快... 如果某平台的 CPU 沒有立即定址,或是直接定址
比較快,又或它只有相對定址,那 #define 一定比較快的說法就不一定對囉..?
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: 140.124.181.134
◆ Modify: 06/05/08 15:43:16 <140.124.181.134>