#include <stdio.h>
#include <string.h>
typedef struct {
char a;
int b;
double c;
}type_t;
//第一个OFFSET宏
//#define OFFSET(TYPE , MEMBER , OFF) \
TYPE temp; \
OFF = (unsigned long)(&(temp.MEMBER)) - (unsigned long)(&(temp));
//第二个OFFSET宏
#define OFFSET(TYPE , MEMBER)((unsigned long)(&(((TYPE *)0)->MEMBER)))
int main(void)
{
int offset = 0;
type_t type;
//offset = (unsigned long)(&(type.c)) - (unsigned long)(&(type)); //不使用宏
//OFFSET(type_t , c , offset); //使用第一个OFFSET
offset = OFFSET(type_t , c); //使用第二个OFFSET
printf("offset = %d\n" , offset);
}
求结构体成员偏移量的三种方法
最新推荐文章于 2023-09-13 00:30:24 发布