您的位置:首页 > 其它

#define OFFSET(struc, m) (size_t)(&(((struc*)0)->m))

2014-07-23 16:06 429 查看
#include <iostream>
#include <stdio.h>
using namespace std;

#define OFFSET(struc, m) (size_t)(&(((struc*)0)->m))

struct MyStruct
{
	MyStruct()
	{
		a = 0;
		b = 'a';
		c = 0.0f;
	}
	
	int a;
	float c;	
	char b;	
};

void main()
{
	cout << OFFSET(MyStruct, a) << endl;

}


(s *)0 是骗编译器说有一个指向类(或结构)s的指针,其值0

&((s *)0)->m 是要取得类s中成员变量m的地址

由于这个类的基址为0,这时m的地址当然就是m在s中的偏移了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: