从DWORD输入类型转换警告到64位指针

时间:2019-09-18 10:30:49

标签: c++ visual-c++

一个旧的32位C ++应用程序(MS Visual Studio)具有如下代码行:

m_value = (PUCHAR)someDWORD;

PUCHAR是指向未签名字符的指针。

现在我已更改为64位,并且收到有关从DWORD转换为64位指针的(有效)警告。我对此的不合格解决方案是这样写:

m_value = (PUCHAR)(DWARD_PTR)someDWORD;

这是解决此警告(以及潜在的运行时错误)的正确方法吗?

1 个答案:

答案 0 :(得分:3)

强制转换为DWORD_PTR的野蛮人只会用零填充someDWORD,不会恢复丢失的指针值的上半部分。

从一开始,您就需要someDWORD成为DWORD_PTR(或者实际上是std::uintptr_t)。