获取结构体中变量的偏移位置

大耗子 2020年08月18日 40次浏览

获取结构体变量偏移位置

#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);

}