大家好,今天给大家分享一下offsetof宏是如何实现的,那么话不多说我们直接开始。
我们要实现这个宏,我们必须先了解这个宏的作用,它是用来求结构体成员变量的偏移量。
我们先来看看它在cplusplus网站中的介绍吧
那么根据这个网站的介绍,我们来看看它是如何使用的:
输出结果是:
看到这里,我们的基本思路是假定0为首地址,这样取出其成员变量的地址便是偏移量。
注意:我们将0强制类型转换为结构体变量,那么这个结构体成员的偏移量就是0加它本身。所以结构体指针0就代表着这个结构体成员要从0这个起始地址计算它的地址这样便可以直接用地址来代替偏移量。
那么下面我们来实现这个宏
最后结果也是与offsetof一样
那么今天分享就到这里,谢谢大家!!!