• 全部
...

对一句ATL代码的疑问

Cline 2008-10-29 03:41:45
static HRESULT WINAPI _Delegate(void* pv, REFIID iid, void** ppvObject, DWORD_PTR dw)
{
HRESULT hRes = E_NOINTERFACE;
IUnknown* p = *(IUnknown**)((DWORD_PTR)pv + dw);
if (p != NULL)
hRes = p->QueryInterface(iid, ppvObject);
return hRes;
}

如果把
IUnknown* p = *(IUnknown**)((DWORD_PTR)pv + dw);
写成
IUnknown* p = (IUnknown*)((DWORD_PTR)pv + dw);
有区别吗?
...全文
给本帖投票
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cline 2008-10-29
  • 打赏
  • 举报
回复
pv是this,dw是其中一个IUnknown*成员变量离this的offset.

明白了,还是要用第一种.

谢谢了.
VsirSoft 2008-10-29
  • 打赏
  • 举报
回复
一个是指针 一个是指针的指针.
yjgx007 2008-10-29
  • 打赏
  • 举报
回复
指针的指针和指针当然是有区别的,不知楼主的具体应用是什么?
如果pv暗示着IUnknown的指针, 用下面的一个, 如果pv暗示着IUnknown的指针的指针(地址), 用上面的一个.

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部