Windows桌面应用程序(1-3-1-2nd) 新数据类型

为64位Windows引入了三类数据类型:固定精度数据类型,指针精度类型和特定指针精度类型。这些类型已添加到开发环境中,以允许开发人员为64位Windows做好准备。这些类型派生自基本的C语言整数和长类型。因此,您可以在32位Windows上编译和测试的代码中使用这些数据类型,然后在以64位Windows为目标时使用64位编译器重新编译。

即使对于仅针对32位Windows的应用程序,采用这些新数据类型也会使代码更加健壮。要使用这些数据类型,必须扫描代码以查找可能不安全的指针使用,多态和数据定义。例如,当变量的类型为ULONG_PTR时,很明显它将用于为算术运算或多态转换指针。通过使用较旧的数据类型无法直接指示此类用法。 (您可以使用派生类型命名或匈牙利表示法间接执行此操作,但这两种技术都容易出错。)

所有这些数据类型都在BaseTsd.h中声明。有关更多信息(包括这些数据类型的定义),请参阅Windows数据类型

固定精度

在32位和64位Windows中,固定精度数据类型的长度相同。为了帮助您记住这一点,它们的精度是数据类型名称的一部分。以下是固定精度数据类型。

术语描述
DWORD3232位无符号整数
DWORD6464位无符号整数
INT3232位有符号整数
INT6464位有符号整数
LONG3232位有符号整数
LONG6464位有符号整数
UINT32无符号INT32
UINT64无符号INT64
ULONG32无符号的LONG32
ULONG64无符号的LONG64

指针精度

随着指针精度的变化(即32位Windows上的32位和64位Windows的64位),指针精度数据类型会相应地反映精度。 因此,在执行指针运算时,可以安全地将指针强制转换为其中一种类型。 如果指针精度为64位,则类型为64位。 计数类型还反映了指针可以引用的最大大小。 以下是指针精度和计数类型。

术语描述
DWORD_PTR指针精度的无符号长类型。
HALF_PTR指针大小的一半。 在包含指针和两个小字段的结构中使用。
INT_PTR指针精度的有符号整数类型。
LONG_PTR有符号长指针精度。
SIZE_T指针可以引用的最大字节数。 用于必须跨越指针的整个范围的计数。
SSIZE_T有符号SIZE_T。
UHALF_PTR无符号HALF_PTR。
UINT_PTR无符号INT_PTR。
ULONG_PTR无符号LONG_PTR。

特定指针精度类型

以下新指针类型显式调整指针的大小。 在64位代码中使用指针时要小心:如果使用32位类型声明指针,操作系统会通过截断64位指针来创建指针。 (所有指针在64位Windows上都是64位。)

术语描述
POINTER_32一个32位指针。 在32位Windows上,这是一个本机指针。 在64位Windows上,这是一个截断的64位指针。
POINTER_64一个64位指针。 在64位Windows上,这是一个本机指针。 在32位Windows上,这是一个符号扩展的32位指针。注意,假设高位指针位的状态是不安全的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值