※ 引述《tomhuang (阿培仔)》之銘言:
> #define A B 會做的事情只是在 source code 中把 A 字串換成 B 字串,
> 如此沒有分 type 吧...
是的. #define這裡只定義了「值」, 而長度則看接受的parameter的長度
決定. 因此在windows.h同時是Win16和Win32的header時, 這樣十分方便.
> 如果 #define A 100 和 const int A = 100; 比起來,
> #define 比較快,那意思應該是說,兩者翻譯出來的組語程式碼,
> 立即定址會比直接定址快... 如果某平台的 CPU 沒有立即定址,或是直接定址
> 比較快,又或它只有相對定址,那 #define 一定比較快的說法就不一定對囉..?
比較在代入參數時:
#define產生的是push 30 = 6A 1E = 2 bytes
const int產生的是push 0x41f00000 = 68 00 00 f0 41 = 5 bytes
執行速度應該是一樣的, 但產生的執行碼大小就差有點遠了.
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: n218103223121.netvigator.com