1

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

4

2 回答 2

3

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

于 2012-01-30T16:47:14.817 回答
1

形式上,它当然是依赖于实现的。在现实生活中,是的,指向数据成员指针的最流行的实现是(或基于)plan-and-simple offset,即与offsetof求值相同的东西。

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

于 2015-07-10T17:18:25.020 回答