VBA LongPtr

示例

Dim Value As LongPtr

LongPtr被引入VBA以支持64位平台。在32位系统上,将其视为Long;在64位系统上,将其视为LongLong。

它的主要用途是提供一种可移植的方式来存储和传递两种体系结构上的指针(请参阅在编译时更改代码行为)。

尽管在API调用中使用操作系统时,操作系统会将其视为内存地址,但应注意,VBA将其视为带符号类型(因此会受到无符号到带符号溢出的影响)。因此,任何使用LongPtrs执行的指针算法都不应使用>或<进行比较。这种“怪异”现象还使得添加指向内存中有效地址的简单偏移量可能导致溢出错误,因此在VBA中使用指针时应格外小心。

转换为LongPtr的强制转换函数为CLngPtr()。对于浮点类型的强制转换,结果将四舍五入为最接近的整数值,并向上舍入.5(尽管由于它通常是一个内存地址,将其用作浮点计算的分配目标充其量是危险的)。