首页 > 其他 > 详细

宏定义使用小技巧

时间:2020-05-28 13:22:36      阅读:43      评论:0      收藏:0      [点我收藏+]

获取结构体某元素的地址偏移量

#define OFFSET (type, field) ( (size_t) &( ((type*)0)->field ) )

ANSI C 允许任何值为0的常量被强制转换为任何一种类型的指针,但是转换结果是NULL指针
&( ((type*)0)->field )意图为计算当前结构体实例的收地址为0时field字段的地址
而我们聪明的编译器则根据type的内存布局和结构体首地址实例计算出常量(地址)

宏定义使用小技巧

原文:https://www.cnblogs.com/zhilong233/p/12979695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!