精華區beta Programming 關於我們 聯絡資訊
※ 引述《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