将窗口CreateFile返回类型(" HANDLE")转换为长数据类型是否安全或正确?反之亦然,即HANDLE类型的长值? 如果方法是正确的,那么如何在Windows 7环境中完成? 32位处理会没问题,但任何可以处理64位版本的便携式代码都可以是最好的。
答案 0 :(得分:1)
HANDLE
可能是作为不透明指针实现的,因此将其强制转换为uintptr_t
不应该给您带来问题。 但它确实不安全。没有从实现定义的数据类型转换为整数是安全的,并且没有从指针到整数的转换是安全的。
指针应该仍然是指针。
不应转换实现定义的类型。
整数应保持整数。
答案 1 :(得分:0)
无法正确地将HANDLE
投射到long
并返回。
考虑到在64位Windows上,long
长度为32位,HANDLE
长度为64位。