【发布时间】:2020-09-07 20:26:12
【问题描述】:
如果我写
long long int module = (long long int)GetModuleHandle(L"test.dll");
C++ 如何知道如何转换 HMODULE?好像我是正确的 HMODULE 应该是一个结构。
我了解这对于 int、float 等基本类型是如何工作的,但是 对于程序员生成的,肯定有翻译吧?
【问题讨论】:
-
编译器只是按照你的要求去做,不关心后果。指向结构的指针转换为
long long int?你是老板,你懂的!结果有效吗?不是编译器的问题,是你的问题。唯一执行的“转换”是如何通过类型解释位。 -
当您打开更激进的警告(如
-Wall或等效警告)时,这说明了什么? -
一个
HMODULE是一个void* -
auto module = GetModuleHandle(L"test.dll");-- 不需要强制转换。 -
@PaulMcKenzie 这不是同一个代码,因为现在
module是HMODULE。如果你只是想删除演员,你会写HMODULE module = GetModuleHandle(L"test.dll");,即auto实际上在这里解决不了任何问题......我并不是说一定不要使用它,但它似乎与问题无关是否有演员表。从这个意义上说,演员阵容从不“必要”。