使用 winnt.h 下的宏: CONTAINING_RECORD
#define CONTAINING_RECORD(address, type, field) ((type *)( \
(PCHAR)(address) - \
(ULONG_PTR)(&((type *)0)->field)))
例:
class MyClass
{
public:
INT m_a;
};
已有一个指向m_a 的指针 pa;
调用 MyClass* pClass = CONTAINING_RECORD(pa, MyClass, m_a );
pClass 则为 对应的对象指针
使用CONTAINING_RECORD定位对象
本文介绍如何利用Windows头文件winnt.h中的CONTAINING_RECORD宏,从成员变量的地址推导出其所属对象的地址。通过示例代码演示了具体用法。
1995

被折叠的 条评论
为什么被折叠?



