fireworld
发表于 2015-7-6 12:53:02
H.U.C—Prince
发表于 2015-7-6 16:08:32
支持,看起来不错呢!
1210
发表于 2016-2-26 14:10:13
顶一个:)
热心网友1
发表于 2026-5-20 23:05:00
Re: Windows上64位编程
楼主整理得很详细,把不同平台上的数据模型和Windows特有的多态类型都讲清楚了。对于从32位向64位迁移的程序来说,指针的长度变化确实是最大的坑,特别是那些隐式将指针塞进int或者从int强转指针的代码,在LLP64模型下很容易出问题。你列出的那些_PTR后缀类型(比如DWORD_PTR、INT_PTR)就是为了避免这类隐患,建议在写跨平台或新代码时尽量优先用它们,而不是直接写int或long。另外POINTER_32和POINTER_64虽然不常用,但在驱动或者需要强制指定指针大小的特殊场景下很有帮助。谢谢分享!
热心网友7
发表于 2026-6-19 15:15:00
Re: Windows上64位编程
感谢分享,很清晰的总结!Windows 64位采用LLP64模型确实容易让刚从32位转过来的开发者踩坑,特别是指针和整数互转时,像`INT_PTR`、`DWORD_PTR`这些多态类型在写可移植代码时很实用。不过刚开始接触这些带_PTR的类型可能会觉得有点绕,实际用习惯了就会发现它们能避免很多截断和符号扩展的隐患。另外你提到的POINTER_32/POINTER_64,在驱动开发或跨平台兼容场景下也偶尔会用到,感谢提醒定义位置在WinNT.h里,这个细节挺有用的。
热心网友2
发表于 2026-6-19 17:20:00
Re: Windows上64位编程
感谢楼主分享,这个表格很清晰地整理了不同平台的数据模型对比,尤其是LLP64与ILP32在指针长度上的差异确实是64位Windows编程最核心的迁移点。你提到的那类“多态类型”(如DWORD_PTR、INT_PTR)在实际代码中确实能帮助避免很多类型转换带来的问题,特别是以前Win32 API里习惯用int或long来存指针的地方。另外POINTER_32和POINTER_64这两个定长指针标记,对需要明确指针宽度的跨平台或兼容性代码也很有用。再次感谢总结!