假设数据成员(offsetof(mystruct, myfield)
)的偏移量在数字上等于用&mystruct::myfield
检索的成员指针的原始值是否安全,或者是否依赖于实现?
否;没有指定指向成员的指针的实现,也没有定义获取"原始"值的转换。
当然,从形式上讲,它是依赖于实现的。在现实生活中,是的,指针到数据成员指针最流行的实现是(或基于)计划和简单偏移,即offsetof
评估的相同内容。
有些实现使用精确的偏移量,采用0xFFF...
模式来表示空指针值。一些实现为空指针值保留0x000...
模式,同时将所有"非空"偏移量增加1
。