C++指针作为DWORD

Chr*_*art 0 c++ pointers casting dword

在C++中,我可以简单地将指针强制转换为DWORD吗?

MyClass * thing;
DWORD myPtr = (DWORD)thing;
Run Code Online (Sandbox Code Playgroud)

那会有用吗?

mar*_*inj 5

在Windows中,以这种方式传递指针是很常见的,例如在windows消息中.LPARAM是LONG_PTR的typedef,通常用于将指针传递给某些结构.你应该reinterpret_cast<DWORD_PTR>(thing)用于铸造.


Jer*_*fin 5

你无疑可以做到这一点.

它是否有效将取决于环境以及您希望它做什么.

在32位Windows 1(最常见的地方DWORD)它通常会很好.在64位Windows(你也看到DWORD,但不是那么多)它通常不会.


  1. 或者,更准确地说,当编译为将作为32位进程运行的32位可执行文件时,无论Windows的实际副本如何,您都会在其上运行.