前一阵子百度来校园招聘时的一道笔试题,该怎么解决
前一阵子百度来校园招聘时的一道笔试题
#define offset(TYPE,MEMBER) (size_t & ((TYPE*)0))-> MEMBER
问这个宏是什么意思?
------解决方案--------------------
应该是这样就好理解了:(size_t) & ((TYPE*)0)-> MEMBER
随后就像楼上的几位兄弟说的,通过偏移取成员再取地址,得其偏移。
当然也可以把0改成任意的数。只不过要将偏移的结果减去这个数。
------解决方案--------------------
#define offset(TYPE,MEMBER) (size_t)(&((TYPE*)0)-> MEMBER)
写成这样要好点
那个不是与,失去地址,然后强制转换为 size_t 类型
#define offset(TYPE,MEMBER) (size_t & ((TYPE*)0))-> MEMBER
问这个宏是什么意思?
------解决方案--------------------
应该是这样就好理解了:(size_t) & ((TYPE*)0)-> MEMBER
随后就像楼上的几位兄弟说的,通过偏移取成员再取地址,得其偏移。
当然也可以把0改成任意的数。只不过要将偏移的结果减去这个数。
------解决方案--------------------
#define offset(TYPE,MEMBER) (size_t)(&((TYPE*)0)-> MEMBER)
写成这样要好点
那个不是与,失去地址,然后强制转换为 size_t 类型