gpt4 book ai didi

c++ - C 风格类型转换困惑

转载 作者:行者123 更新时间:2023-11-27 23:28:44 25 4
gpt4 key购买 nike

我正在阅读某人的(公开的)源代码,我遇到了这一行,但不知道它做了什么。我试过分解它,但不管我怎么尝试,它总是以让我感到困惑而告终。

uintptr_t* pInterfaceVTable = (uintptr_t*)*(uintptr_t*)pd3dDevice;

pd3dDevice 是一个 LPDIRECT3DDEVICE9,它是一个 IDirect3DDevice9*IDirect3DDevice9 是一个继承自 IUnknown 的类,并且都实现了一堆虚函数。

能不能请更懂行的人逐行帮助我了解这段代码的作用?

非常感谢您的宝贵时间!

最佳答案

uintptr_t 是一个可以存储指针的整数类型。

作者假设(知道?)IDirect3DDevice9 中的第一个条目是一个指针,因此他将 IDirect3DDevice9 强制转换为 (uintptr_t*) 并取消引用它以访问该指针。然后他再次将该 uintptr_t 转换为一个指针(指向 uintptr_t)以将其分配给 pInterfaceVTable。
正如评论中和 AndyT 所提到的,即使用的编译器存储指向 VTable 的指针,但 C++ 不保证这一点。

关于c++ - C 风格类型转换困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7496516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com