такое указатель на элемент данных его смещение? - PullRequest
1 голос
/ 30 января 2012

Можно ли предположить, что смещение элемента данных (offsetof(mystruct, myfield)) численно равно необработанному значению указателя элемента, полученного с помощью &mystruct::myfield, или оно зависит от реализации?

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Нет;реализация указателя на член не указана, и не существует определенного преобразования для получения «сырого» значения.

0 голосов
/ 10 июля 2015

Формально, это зависит от реализации, конечно.Да, в реальной жизни наиболее популярной реализацией указателей на указатель на элемент данных является (или основано на) плановое и простое смещение, то есть то же, что offsetof оценивает до.

Некоторые реализации используют точное смещение, прибегая к шаблону 0xFFF... для представления значения нулевого указателя.Некоторые реализации резервируют шаблон 0x000... для значения нулевого указателя, в то же время увеличивая все «ненулевые» смещения на 1.

...