期望用戶將偏移量以DWORD64的形式傳進來,然后我調用WindowsAPI進行定位,讀取文件,返回
這是CB下的測試結果,沒有報錯,只給你返回一個錯誤的結果
1
// 是測試DWORD64右移32位會出現什么狀況
2
DOWRD64 dw6403 = 1024*1024*1024;
3
DWORD64 dw6404 = 2*1024*1024*1024;
4
UINT uTmp = 6403>>32; // 0
5
uTmp = 6404>>32; // oxFFFFFFFF

2

3

4

5

// CB下編譯通過,結果正確
1
// 目的同上
2
DWORD64 dw641G = 1024*1024*1024;
3
DWORD64 dw6404 = 2*dw641G ;
4
UINT uTmp = dw6404>>32; // 0

2

3

4

結論:是兩家的編譯器在預編譯的時候,不允許數值超過1G。