如this MSDN article中所述,Microsoft有两种类型的注释来声明不同体系结构上的本机指针。但是,在第二行:
在32位系统上,使用__ptr64声明的指针被截断为32位指针。在64位系统上,使用__ptr32声明的指针被强制转换为64位指针。
这听起来像声明无关紧要;如果架构覆盖__ptrXX的声明是默认的,那么首先标记__ptrXX的重点是什么?
我看到this answer表示它是互操作的,但如果声明基本上被覆盖,那么这对互操作有什么帮助呢?
答案 0 :(得分:2)
声明和分配32位指针并实际使用它之间存在很大差异。换句话说,取消引用指针。如果您在64位进程中执行此操作,则除了将其签名扩展为64位指针之外没有其他选项。这是“强迫”的意思。 可能意外地工作,但你必须非常幸运。尝试是没有意义的。
声明__ptr32的意义与链接的答案中描述的一样,只有在与32位进程交互时才有意义。其中使用32位指针。这并不常见。