一:零地址转换
以下为MFC常用宏:
#define OFFSET(structure, member) ((int)&((structure*)0)->member);
#include <iostream>
#define GET(A,m) (int)(&((A*)0)->m);
using namespace std;
struct A{
int a;//4
char b[3];//4
int d;//4
int c;
};
int main(int argc, char *argv[])
{
//--------------------------------
// ss *s=(ss*)0;
// int * w=&(s->c);
// cout<<w;
//----------------------------
//原理与以上注释相符
cout<<GET(A,c);//得到偏移值,就是0地址的转换技巧罢了
//宏的替换规则
// cout<<(int)(&((A*)0)->c);
return 0;
}
二:通过类成员指针获得成员偏移量
int nOffset = reinterpret_cast<int>(*(void**)(&pOffset))将其转化为整型量。