注册 登录
编程论坛 C语言论坛

请教一个HWND强转成int的问题

a451410 发布于 2024-07-23 00:04, 326 次点击
是这样的,我定义了一个HWND类型的变量,如果我没记错它实际上应该是个无符号整型,unsigned int;
但是在强转成int是确报错了,不清楚是不是编译器的问题;
代码及错误简略如下:
HWND hand;
int a;
... ...
... ...
a = (int)hand;<-----这一句就报错了;error: cast from 'HWND' {aka 'HWND__*'} to 'int' loses precision [-fpermissive]
错误说是会损失精度,我寻思不会损失精度啊,即便会也能强转啊,顶多算个waring,也不会报错啊;
百思不得其解!至今仍未解决怎么办!
我用的是codeblock编译器;
5 回复
#2
吹水佬2024-07-23 08:26
试试用指针类型转换或用联合类型
#3
rjsp2024-07-23 08:33
HWND 是个指针类型,int未必能存得下。
按标准,指针要想转化成整型的话,应当用 uintptr_t 类型,它是一个能保证存得下地址的整型。
    HWND hwnd = nullptr;
    uintptr_t a = (uintptr_t)hwnd;


#4
yiyanxiyin2024-07-23 10:30
回复 楼主 a451410
你不都说了是unsigned int吗, 和int当然不兼容了
#5
a4514102024-07-23 21:26
我的解决办法是,定义了一个int指针,把hwnd强转成int指针,然后再强转成int。就不报错了
#6
rjsp2024-07-24 16:33
以下是引用a451410在2024-7-23 21:26:39的发言:

我的解决办法是,定义了一个int指针,把hwnd强转成int指针,然后再强转成int。就不报错了
int 就存不下指针值,所以肯定还是错误的
1