c++ - 将 32 位移植到 64 位时处理问题的正确方法。从 DT1 转换为更大尺寸的 DT2

标签 c++ 32bit-64bit porting

所以我正在尝试将 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/

相关文章:

c++ - 从类型名中获取类型信息

c# - VB 到 C++ 或 C#?

php - 为什么正常的对象实例化和通过引用的对象实例化之间存在差异?

python - 在 Python2 和 Python3 中写入不同的十六进制值

c++ - 静态伪随机场发生器

c++ - 在 STL Map 中查找 String Key 的 upper_bound

c++ - 从函数返回结构和内存分配

c - Strsep 在我的 Mac OS X x86_64 系统上返回 32 位指针

VBA 32 位和 64 位类型不匹配

c - 关于整数内存分配