这种C强制类型转换怎么理解?
这种类型转换怎么理解?为什么不是直接转换,好处是什么?
void fnDemo(DWORD dwValue){ PVOID pValue = (PVOID)(DWORD_PTR)(dwValue); // 为什么不是 // PVOID pValue = (PVOID)(dwValue); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
谢谢
应该是PVOID不支持直接转换DWORD类型,需要先强行转换为DWORD_PTR类型
楼上说的太累了,看的都觉得累
这个没什么特别的东西,DWORD_PTR也只是一个define而已(为了代码能够更好的兼容32位/64位而加入的,不过对也这个函数来说,DWORD本身就限制了数据是32位的,再转DWORD_PTR也没什么区别,除非传入的是DWORD_PTR),没什么特别的,你觉得那种适合自己就用哪种了。
另外,微软建议的是如果是传地址值,最好使用_PTR后缀的类型,可以省去你不少32位/64位兼容的问题。