作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如 this MSDN article 中所述,微软有这两种类型注释来声明不同架构上的 native 指针。但是,在第二行:
On a 32-bit system, a pointer declared with __ptr64 is truncated to a 32-bit pointer. On a 64-bit system, a pointer declared with __ptr32 is coerced to a 64-bit pointer.
在我看来,声明并不重要;如果架构无论如何都会覆盖 __ptrXX 的声明为默认值,那么首先标记 __ptrXX 的意义何在?
我看到this answer说它是为了互操作,但如果声明基本上如上所述被重写,这对互操作有什么帮助?
最佳答案
声明和分配 32 位指针与实际使用它之间存在很大差异。换句话说,取消引用指针。如果您在 64 位进程中执行此操作,则没有其他选择,只能将其符号扩展为 64 位指针。这就是“强制”的意思。 可能会偶然起作用,但你必须非常幸运。尝试是没有意义的。
声明 __ptr32 的要点如该链接答案中所述,仅当您与 32 位进程进行互操作时才有意义。其中使用 32 位指针。这种情况并不常见。
关于pointers - __ptr32 和 __ptr64 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792644/
我是一名优秀的程序员,十分优秀!