细说 offsetof

【整理我以前的blog】

 

有人考试问我题:宏定义实现 offsetof. 我没细想,就将答案 发去了

 

#define offsetof(s,m) (size_t)&(((s *)0)->m).

 

但是后来居然问我为什么?无语了。。

 

将英文资料找出来:

 

  Retrieves the offset of a member from the beginning of its parent structure. size_t offsetof( structName, memberName ); Parameters structName Name of the parent data structure. memberName Name of the member in the parent data structure for which to determine the offset. Return Value offsetof returns the offset in bytes of the specified member from the beginning of its parent data structure. It is undefined for bit fields. Remarks The offsetof macro returns the offset in bytes of memberName from the beginning of the structure specified by structName. You can specify types with the struct keyword. Note offsetof is not a function and cannot be described using a C prototype.

 

 

 

妙在将0当指针且恰好又是首址,取地址就是偏移量了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值