【发布时间】:2013-06-21 16:08:55
【问题描述】:
我见过很多人询问从 32 位到 64 位机器的移植问题。但是将编写在 64 位上的代码移植到 32 位上不是很常见吗?我正在尝试在 C 中将插件从 64 位移植到 32 位,但在将 void * 存储到 64 位整数(反之亦然)的情况下面临类似问题。
在更改代码以使相同的代码在两台(i386 和 x86_64)机器上都可以工作时应该采取什么方法?我认为在 32 位机器上使用 uint64_t * 代替 32 位的 void* 没有意义?此类情况是否存在一些通用方法?
【问题讨论】:
-
指针永远不应该存储在固定大小的整数中。如果您需要将指针存储为整数类型,正确的类型是
uintptr_t,但您根本不应该将指针存储在整数对象中。