#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#define SOR(x) (x)*(x) //求平方
#define Max(a,b) (((a)-(b)) == fabs((a)-(b)))?(a):(b) //求最大值
#define Min(a,b) (((a)-(b)) == fabs((a)-(b)))?(b):(a) //求最小值
#define ISUNSIGNED(a) ((a > 0)&&(~a > 0)) //判定变量是否是无符号的
#define ISUNSIGNED_TYPE(type) ((type)(0-1) > 0) //判定类型是否是无符号的
#define MySize(value) ((char *)((&value) + 1) - (char *)(&value)) // 求类型占用的空间大小
#define OffSet(type,field) ((size_t)&(((type*)0)->field)) // 求结构体中的偏移
struct str
{
int a;
float f;
double d;
char c;
};
int main(int argc, char *argv[])
{
printf("%d\n",OffSet(struct str,a)); // 0
printf("%d\n",OffSet(struct str,f)); // 4
printf("%d\n",OffSet(struct str,d)); // 8
printf("%d\n",OffSet(struct str,c)); // 16
return 0;
}