一个问题,如何自动导出结构体的偏移
有没有方法自动分析出一个结构体每一项的偏移量呢?例如
struct xx
{
int a;
int b;
}xx;
可以自动分析出a : 0, b: 4呢?
更复杂的情况包括:
struct yy
{
int a;
int b;
#ifdef DEFC
int c;
#endif
int d;
} yy;
能够正确判断d是偏移8还是12?
回复 #1 tianjiao08 的帖子
如果是gcc,那么你可以使用 __builtin_offsetof 来计算偏移。如果不是gcc,那么你可以写一个小程序来计算。
struct xx
{
int a;
int b;
}xx;
那么 &xx.a - &xx 就是 a 的偏移。 &xx.b - &xx 就是 b 的偏移。 linux内核代码中还有一个办法:
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 其实我是想说,编译器(暂设定为gcc)的debug信息中应该包含这些信息,能否写一个程序提取出这些信息(不是自己用offset算) 可以的。
http://code.google.com/p/reflecxx/
页:
[1]