Windows桌面应用程序(1-3-1-1st) 抽象数据模型

本文探讨了从32位编程模型(ILP32)到64位编程模型(LLP64)的转变过程中,如何通过只扩展指针大小来减少移植工作量。介绍了新的数据类型如何帮助开发者在不同位宽环境下维持代码的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每个应用程序和每个操作系统都有一个抽象数据模型。许多应用程序没有明确公开此数据模型,但该模型指导了应用程序代码的编写方式。在32位编程模型(称为ILP32模型)中,整数,长整数和指针数据类型的长度为32位。大多数开发人员都没有意识到这个模型。对于Win32 API的历史记录,这是一个有效的(虽然不一定是安全的)假设。

在64位Windows中,这种数据类型大小的奇偶校验假设无效。使所有数据类型长度为64位会浪费空间,因为大多数应用程序不需要增加大小。但是,应用程序确实需要指向64位数据的指针,并且它们需要能够在选定的情况下具有64位数据类型。这些考虑因素导致选择了一个名为LLP64(或P64)的抽象数据模型。在LLP64数据模型中,只有指针扩展到64位;所有其他基本数据类型(整数和长整数)的长度保持为32位。

最初,大多数在64位Windows上运行的应用程序都将从32位Windows移植。目标是精心编写的相同源应该在32位和64位Windows上运行。定义数据模型不会使此任务更容易。但是,确保数据模型仅影响指针数据类型是第一步。第二步是定义一组新的数据类型,允许开发人员自动调整与指针相关的数据。这允许与指针相关联的数据随着指针大小从32位变为64位而改变大小。基本数据类型的长度保持为32位,因此磁盘上的数据大小,网络上共享的数据或通过内存映射文件共享的数据不会发生变化。这减轻了开发人员将32位代码移植到64位Windows所需的大量工作。

这些新数据类型已添加到Windows API头文件中。因此,您现在可以开始使用新类型。有关更多信息,请参阅新数据类型


原文链接:Abstract Data Models

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值