__ptr32 和 __ptr64 有什么意义?

2024-02-17

如中所述这篇 MSDN 文章 http://msdn.microsoft.com/en-us/library/aa985900%28v=vs.80%29.aspx,微软有这两种类型注释来声明不同架构上的本机指针。然而,在第二行:

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

在我看来,声明并不重要;如果架构无论如何都会覆盖 __ptrXX 的默认声明,那么首先标记 __ptrXX 的意义何在?

我看到这个答案 https://stackoverflow.com/a/3449361/1092672说它是为了互操作,但是如果声明基本上如上所述被覆盖,那么这对互操作有何帮助?


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

__ptr32 和 __ptr64 有什么意义? 的相关文章

随机推荐