获取结构体变量偏移位置
#define get_variable_index(TYPE, member,ITYPE,index)\
{ \
*index = (ITYPE)(&(((TYPE*)0)->member));\
}while(0)
TYPE为结构体类型。
member为结构体中要获取位置的变量名。
ITYPE为接收偏移的变量的类型。
index为接收偏移的变量。
使用范例
#include <stdio.h>
struct temp {
char mem[10];
int a;
short b;
double c;
};
#define get_variable_index(TYPE, member,ITYPE,index) \
{ \
*index = (ITYPE)(&(((TYPE*)0)->member)); \
}while(0)
void main(void)
{
int index;
get_variable_index(struct temp, b, int, &index);
printf("%d\n",index);
}