c++ offset define
2013-11-14 22:43
232 查看
#include <iostream>
using namespace std;
class test {
public:
void show() {
cout << y << '\n';
}
public:
int x = 10;
int y = 20;
};
#define offset_(x, yy) ((size_t)&((x *)nullptr)->y)
int main() {
test a;
int y = *(int *)((uint64_t)&a + offset_(test, y));
cout << y << '\n';
a.show();
return 0;
}
offset的宏实现
OFFSET_OF(TYPE, FIELD) ((size_t)&((TYPE*)nullptr)->FIELD)
虚继承时offset会出现负的情况
using namespace std;
class test {
public:
void show() {
cout << y << '\n';
}
public:
int x = 10;
int y = 20;
};
#define offset_(x, yy) ((size_t)&((x *)nullptr)->y)
int main() {
test a;
int y = *(int *)((uint64_t)&a + offset_(test, y));
cout << y << '\n';
a.show();
return 0;
}
offset的宏实现
OFFSET_OF(TYPE, FIELD) ((size_t)&((TYPE*)nullptr)->FIELD)
虚继承时offset会出现负的情况
相关文章推荐
- C++实现Python变量
- Temporaries - C++11, 17 of n
- 如何成为一个C++高级程序员
- C++继承体系高级话题
- C++第12周项目2——太乐了
- c++ static 两种用法
- C++第12周项目1——某年的第几天
- C++类中的静态成员变量和静态成员函数的作用
- 《Effective C++》item7:为多态基类声明virtual析构函数
- c++文件读写
- C++ 类型安全
- 【C++】自绘控件基础
- C语言教学--二维数组和指针的理解
- 【C++】DDX_Control、SubclassWindow和SubclassDlgItem的区别
- 【C++自绘控件】如何用GDI+来显示图片
- C++ - 复制(copy) 和 虚复制(virtual copy) 的 区别
- C++ 排序函数 sort(),qsort()的用法
- C++ - 定义无双引号的字符串宏
- Accelerated C++ exercises 4-0
- 在C++中调用DLL中的函数——静态调用和动态调用