akr*_*roy 8 pointers visual-c++
正如这篇 MSDN 文章中所述,Microsoft 有这两种类型注释来声明不同体系结构上的本机指针。然而,在第二行:
在 32 位系统上,使用 __ptr64 声明的指针将被截断为 32 位指针。在 64 位系统上,用 __ptr32 声明的指针被强制为 64 位指针。
在我看来,声明并不重要;如果架构无论如何都会覆盖 __ptrXX 的默认声明,那么首先标记 __ptrXX 的意义何在?
我看到这个答案说它是为了互操作,但是如果声明基本上如上所述被覆盖,那么这对互操作有何帮助?
声明和分配 32 位指针与实际使用它之间存在很大差异。换句话说,取消引用指针。如果您在 64 位进程中执行此操作,则没有其他选择,只能将其符号扩展为 64 位指针。这就是“强迫”的意思。这可能是偶然的,但你必须非常幸运。尝试是没有意义的。
声明 __ptr32 的要点如链接答案中所述,仅当您与 32 位进程进行互操作时才有意义。其中使用 32 位指针。这并不常见。