这种C强制类型转换怎么理解?

发布于 2021-11-28 00:27:05 字数 259 浏览 849 评论 3

这种类型转换怎么理解?为什么不是直接转换,好处是什么?
void fnDemo(DWORD dwValue){
    PVOID pValue = (PVOID)(DWORD_PTR)(dwValue);
    // 为什么不是
    // PVOID pValue = (PVOID)(dwValue);
}




如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一个人的旅程 2021-12-04 04:00:08

谢谢

夜血缘 2021-12-03 16:44:53

应该是PVOID不支持直接转换DWORD类型,需要先强行转换为DWORD_PTR类型

楼上说的太累了,看的都觉得累

野心澎湃 2021-12-03 05:21:21

这个没什么特别的东西,DWORD_PTR也只是一个define而已(为了代码能够更好的兼容32位/64位而加入的,不过对也这个函数来说,DWORD本身就限制了数据是32位的,再转DWORD_PTR也没什么区别,除非传入的是DWORD_PTR),没什么特别的,你觉得那种适合自己就用哪种了。

另外,微软建议的是如果是传地址值,最好使用_PTR后缀的类型,可以省去你不少32位/64位兼容的问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文