是指向数据成员的偏移量的指针吗?

时间:2012-01-30 16:32:59

标签: c++ member-pointers offsetof

我可以安全地假设数据成员(offsetof(mystruct, myfield))的偏移量在数值上等于用&mystruct::myfield检索的成员指针的原始值,还是依赖于实现?

2 个答案:

答案 0 :(得分:3)

没有;未指定指向成员的指针的实现,并且没有定义的转换来获取“原始”值。

答案 1 :(得分:0)

正式来说,它依赖于实现。在现实生活中,是的,指针到数据成员指针的最流行的实现是(或基于)计划和简单的偏移,即offsetof评估的相同的事情。

某些实现使用精确偏移量,使用0xFFF...模式来表示空指针值。一些实现为空指针值保留0x000...模式,同时将所有“非空”偏移量递增1