如 this MSDN article 中所述,Microsoft 有这两种类型注释来声明不同架构上的 native 指针。但是,在第二行:
这对我来说听起来好像声明无关紧要;如果架构将 __ptrXX 的声明覆盖为默认值,那么首先标记 __ptrXX 有什么意义?
我看到 this answer 说它是用于互操作的,但是如果声明基本上如上所述被覆盖,这对互操作有什么帮助?
最佳答案
声明和分配 32 位指针与实际使用它之间存在很大差异。换句话说,取消引用指针。如果您在 64 位进程中执行此操作,则别无选择,只能将其符号扩展为 64 位指针。这就是“胁迫”的意思。这可能是偶然的,但你必须非常幸运。只是尝试没有意义。
声明 __ptr32 的要点如该链接答案中所述,仅当您与 32 位进程互操作时才有意义。其中使用 32 位指针。这并不常见。
关于pointers - __ptr32 和 __ptr64 有什么意义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17792644/