1、计算结构体成员偏移量
#define offsetof(type, member) ((unsigned long) &((type*)0)->member)
type-- 结构体类型,member-- s类型结构体成员变量
计算结果:type结构中偏移到member成员的偏移量(字节)
2、根据结构成员地址找到结构首地址
#define container_of(ptr, type, member) \
((type *)(void *)((char *)(ptr) - offsetof(type, member)))
3、计算结构体成员大小
#define member_size(type, member) (sizeof(((type*)(0))->member))
4、计算数组的元素个数
#define array_len(x) (sizeof(x) / sizeof((x)[0]))