根据class/struct中一个成员的地址,获取该class/struct的地址
2011-08-17 17:56
267 查看
使用 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 则为 对应的对象指针
#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 则为 对应的对象指针
相关文章推荐
- 与struct相关的宏定义 --- 根据成员变量偏移,获取struct起始地址
- 与struct相关的宏定义(成员变量偏移和获取struct起始地址)
- JavaSE8基础 Class getDeclaredFields 获取一个类中所有的成员变量
- 根据结构体的一个成员来获取其他成员的使用
- 使用宏定义来获取一个结构体成员相对于该结构体首地址的偏移量
- .net根据经纬度获取地址(百度api)
- 百度地图根据经纬度获取地址
- android 获取某个class里的所有成员变量和静态变量的名称方法
- oracle 根据一个时间段获取这个时间段内所有月份、天数、日期
- 从结构体成员获取结构体地址的方法
- 根据经纬度获取当前地址
- 根据PE文件格式获取LoadLibraryA()/GetProcAddress()地址
- 方维,根据图片ID获取图片地址,{getimgbyid }
- 获取资源文件地址getClassLoader
- iphone 地图 根据地址获取经纬度
- 获取C++类成员虚函数地址
- 根据身份证号获取地址
- 利用 getsockname 和 getpeername 来获取某一个链接的本地地址和远端地址
- 脚本-根据ip和mask获取网络地址
- 高德地图根据地址批量获取经纬度