CONTAINING_RECORD宏的使用
已知类或结构体成员变量的地址,可以取得类或结构体对象的地址。
- 代码
#include <windows.h>
#include <iostream>
class MyClass
{
public:
MyClass(){}
virtual ~MyClass(){}
public:
int m_Value1;
int m_Value2;
int m_Value3;
};
int main(int argc, char** argv)
{
//已知类或结构体成员变量的地址,可以取得类或结构体对象的地址
MyClass myObj;
int* pValue2 = &(myObj.m_Value2);
MyClass* pObjBase = CONTAINING_RECORD(pValue2, MyClass, m_Value2);
std::cout << "long long(&myObj)" << long long(&myObj) << std::endl
<< "long long(pObjBase)" << long long(pObjBase) << std::endl;
return 0;
}
- 输出结果
CONTAINING_RECORD的探究
以下内容来自: