求取结构体成员偏移量的宏定义

来源:互联网 发布:汽车产业组织的优化 编辑:程序博客网 时间:2024/04/24 10:12

 stddef.h中有如下宏:

#ifdef  _WIN64
#define offsetof(s,m)   (size_t)( (ptrdiff_t)&(   ( (s *)0 )->m   ) )
#else
#define offsetof(s,m)   (size_t)&(   ( (s *) 0 )->m   )
#endif

解释:

宏里面的 & 取的成员地址是相对与 s 的相对地址

用 size_t 把返回值 转化为了 十进制,否则 返回值类似于:12345678 为8位的16进制数(这也是地址值的正常表示法(32位地址,4个字节)

原创粉丝点击