【发布时间】:2014-01-30 01:14:48
【问题描述】:
我正在尝试调用 Windows API 函数 GetExitCodeProcess,该函数将 LPDWORD 作为其第二个参数。
根据MSDN,LPDWORD 是一个指向无符号 32 位值的指针。所以我尝试传递一个uint32_t*,但编译器(MSVC 11.0)对此并不满意:
错误 C2664:“GetExitCodeProcess”:无法将参数 2 从“uint32_t *”转换为“LPDWORD”
static_cast 也无济于事。这是为什么?在这种情况下使用reinterpret_cast 是否安全?
【问题讨论】:
-
为什么不使用
DWORD,然后再分配回您的uint32_t? -
DWORD 为 unsigned long,与 unsigned int 不同
-
@stijn:MSDN 说
DWORD是“一个 32 位无符号整数”。uint32_t也是如此。那么有什么区别呢? -
@Chad:我想我可以做到这一点(现在我使用
reinterpret_cast作为解决方法)。但我想了解这里发生了什么。 -
区别在于指向 unsigned int 的指针与指向 unsigned long 的指针不同。