※ 引述《leicheong.bbs@bbs.sayya.org (理昌)》之銘言:
: - 如果#define的內容是primitive type(byte, int, long等), #define
: 的空間使用和執行效能是必定高於const的.
^^^^^^^^ ^^^^
這部份並不正確, 使用 const 並不會影響到效能.
Compiler 對於 #define 所做的最佳化, 也會同樣地用在 const 上. 在
const 的值被定義成常數下, 程式在執行時不是如前文所說的會去記憶體中
讀取, 而是在 compile 時就和 #define 一樣被最佳化, compiler 在遇到
這一類的 const 時會用被定義的常數去取代, 如同 #define.
一個簡單地比較方式是去比較 instruction count, 在同樣使用 -O 來最佳化
兩種寫法下, 兩者所花費的 instruction 會相同.
另外一個使用 const 的好處是可以有不同的 scope, #define 只能有 global.
此外, 在所定義的值並非常數的情況下, const 的空間使用和執行效能會比
#define 佳.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 69.236.127.197