4

这篇 MSDN 文章中所述,Microsoft 有这两种类型的注释来声明不同架构上的本机指针。但是,在第二行:

在 32 位系统上,使用 __ptr64 声明的指针被截断为 32 位指针。在 64 位系统上,使用 __ptr32 声明的指针被强制转换为 64 位指针。

在我看来,这听起来像是声明无关紧要;如果架构将 __ptrXX 的声明覆盖为默认值,那么首先标记 __ptrXX 有什么意义?

我看到这个答案说它是用于互操作的,但是如果声明基本上如上所述被覆盖,那么这对互操作有什么帮助?

4

1 回答 1

3

声明和分配 32 位指针与实际使用它之间存在很大差异。换句话说,取消引用指针。如果您在 64 位进程中执行此操作,则没有其他选择,只能将其符号扩展为 64 位指针。这就是“强迫”的意思。这可能是偶然的,但你必须非常幸运。尝试是没有意义的。

声明 __ptr32 的要点如链接答案中所述,仅当您与 32 位进程互操作时才有意义。它使用 32 位指针。这并不常见。

于 2013-07-22T17:11:23.637 回答