所以我正在尝试将 32 位移植到 64 位。
我已经打开 VS2008 标志来检测 64 位问题。
我正在尝试以下操作:
char * pList = (char *)uiTmp);
警告 C4312:“type cast”:从“unsigned int”到更大尺寸的“char *”的转换
忽略代码本身。对于任何指针也是如此,因为 64 位指针大于 32 位 unsigned int 或 int。
鉴于您必须将较小的类型转换为更大的类型,您将如何在两个 32/64 位系统上正确执行此操作
最佳答案
这不是您可以忽略的警告,它会在 64 位代码中爆炸。 unsigned int 不能存储指针。没有任何魔法可以使这项工作成功。
检查您的代码并重新考虑将指针值存储在无符号整数中。它可能应该是一个 void*。如果你#include <windows.h>
那么你可以使用 UINT_PTR。
关于c++ - 将 32 位移植到 64 位时处理问题的正确方法。从 DT1 转换为更大尺寸的 DT2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2960775/