【发布时间】:2011-02-26 23:52:40
【问题描述】:
所以我正在尝试将 32 位移植到 64 位。
我已打开 VS2008 标志以检测 64 位问题。
我正在尝试关注:
char * pList = (char *)uiTmp);
警告 C4312:'type cast':从 'unsigned int' 转换为更大尺寸的 'char *'
忽略代码本身。对于任何指针也是如此,因为 64 位指针大于 32 位 unsigned int 或 int。
鉴于您必须将较小的类型转换为较大的类型,您将如何在两个 32/64 位系统上正确执行此操作
【问题讨论】:
-
我想一个显而易见的问题是:为什么要将整数转换为指针?
-
您要问的基本上似乎归结为“如何将 64 位数据写入 32 位变量”。答案可能会让您感到震惊和惊讶,但这是不可能的。如果要避免丢失数据,则必须将其写入指针大小的整数类型。
-
您正在将 32 位类型转换为 64 位,因此它的存储空间绰绰有余。我不是在谈论当您尝试将指针存储到 int 时的情况(64 存储在 32 位当然不能工作)
-
但显然(?)如果你从 int 中得到一个指针,你必须首先把它放在那里,这是真正的问题。
-
@T.E.D.除非你能保证你的代码不会被重定位到高内存地址,否则你不能使用那些 C 库。
标签: c++ 32bit-64bit porting