结构体计算某个field的地址偏移
2012-12-02 12:05
253 查看
#include <iostream> #include <assert.h> #include <algorithm> #include <hash_set> #include <vector> #include <assert.h> using namespace std; struct AA { char ch; double d; int a; }; #define OFFSET(Type,Field) (size_t)&( ((Type*)0)->Field) #define OFFSET2(Type,Field) (size_t)( (char *)&(((Type*)0)->Field) - (char*)0) int main() { AA aaa; int i= (char*)(&aaa.a)-(char*)(&aaa); int d =(char*)(&aaa.d) -(char*)(&aaa); int c = (char*)(&aaa.ch)-(char*)(&aaa); cout<<"int a: "<<i<<endl<<" char ch: "<<c<<endl<<" double d: "<<d<<endl; cout<<OFFSET(AA,a)<<" "<<OFFSET(AA,ch)<<" "<<OFFSET(AA,d)<<endl; cout<<OFFSET2(AA,a)<<" "<<OFFSET2(AA,ch)<<" "<<OFFSET2(AA,d)<<endl; return 0; }
结构体求某个field的地址偏移
相关文章推荐
- 结构体偏移的计算
- 通过结构体某个成员的地址计算结构体首地址[转]
- 通过结构体某个成员的地址计算结构体首地址[转]
- 如何计算结构体大小和结构体中成员的内存偏移
- c语言复习-----结构体的地址计算(宏)
- 由结构体成员地址计算结构体地址——list_entry()原理详解
- 根据结构体里面元素的某个地址计算机构体地址
- 根据结构体里面元素的某个地址计算机构体地址
- 结构体成员地址在结构体内的偏移
- 关于由结构体首地址算其内部的一些变量时所用的偏移和CONTAINING_RECORD宏
- 关于用list_head 来计算结构体地址的问题
- 由结构体成员地址计算结构体地址——节点地址的函数list_entry()原理详解
- C学习笔记 7 写出一个宏,求任意结构体成员相对于结构体首地址的偏移。
- 【LibUIDK界面库系列文章】计算结构体中成员相对this的偏移
- 通过结构体某个成员的地址计算结构体首地址
- CCNA Cisco子网划分(不使用 VLSM 计算和分配地址)
- C++面试题之结构体内存对齐计算问题总结大全
- sizeof(结构体)的计算
- socket 地址结构体定义
- C++ 多重继承 计算虚表指针及虚函数地址