精華區beta Programming 關於我們 聯絡資訊
※ 引述《noguest.bbs@ptt.cc (guest)》之銘言: > 以下面這個簡單地程式為例: > const int a=10; (或是 #define a 10) > int b=0; > ... > b+=a; 以下是這段程式館碼在VC7中compile的結果: 使用const時: 00401006 |. C745 FC 0A0000>MOV DWORD PTR SS:[EBP-4],0A 0040100D |. C745 F8 000000>MOV DWORD PTR SS:[EBP-8],0 00401014 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 00401017 |. 83C0 0A ADD EAX,0A 0040101A |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 使用#define時: 00401004 |. C745 FC 000000>MOV DWORD PTR SS:[EBP-4],0 0040100B |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0040100E |. 83C0 0A ADD EAX,0A 00401011 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 沒有完成在全域最佳化(/Og)下的測試, 因為找不到進入點... 或許遲一點再做吧... 不過在沒有用最佳化時, const宣告明顯地多了一行在這裡沒有用處的指令. 也就是說, 當用const宣告時, 即使你沒有用到該值也會佔位置. -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: ip-84-126-134-202.rev.dyxnet.com