瀏覽單個文章
futureli
Basic Member
 

加入日期: Feb 2006
文章: 20
引用:
作者kyrusp
這個嘛....data 到哪邊都是一樣, 我說的是在 memory 中的運作, 想想看, 在 Linux AMD64 下, 一個 long 是 int64, 但是在 WinXP X64 卻是 int32, 從 Linux 底下完全不改移植到 Windows XP X64, 一個不小心就會 overflow 了

拿個比方來說好了, 如果你寫一個加工業的管理系統, 裡面需要算物料的體積, 長寬高, 以 mm 為單位, 你覺得會不會 ? 連正常在寫, 不考慮 Windows or Linux 底下的環境, 長寬高都要用到 int64 了(這樣相乘起來才不會 overflow), 在 Linux AMD64 下很正常就用了 long, 但是移植到 WinXP X64 , 裡面的 long 居然是 int32, 試想, 這樣會不會 overflow ?


嗯! 這段話其實不完全正確喔...其實在 WinXP x64 和 Linux x64 的 long 一個是4bytes,
一個是 8bytes。關鍵不是在作業系統,而是在編譯器...也就是說...在 WinXP x64 裡用
VC 系列的 x64 編譯器 long 才是 4 bytes, 如果你在 WinXP x64 裡用 x64 的 gcc (
如果你找的到的話^^),那 long 就會是 8 bytes 而不是 4 bytes!

所以如果在 porting 時要是都用 gcc 的話,這問題就不會發生了^^。
舊 2007-09-27, 05:27 PM #29
回應時引用此文章
futureli離線中