求结构体成员偏移量的三种方法

来源:互联网 发布:mac版ps笔刷怎么安装 编辑:程序博客网 时间:2024/04/27 08:33
#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);}

0 0
原创粉丝点击