Получить положение поля в структуре - PullRequest
4 голосов
/ 08 ноября 2010

Довольно простой вопрос (надеюсь). Учитывая структуру в C (расположение которой известно во время компиляции), есть ли способ (через макрос или другой), что я могу получить доступ к позиции байта именованного поля в структуре?

Поддержка союзов будет бонусом. Компилятор VC ++ 2008. Предположим, что используется #pragma pack(1).

Приветствия

Ответы [ 2 ]

7 голосов
/ 08 ноября 2010

Вы ищете offsetof. Это должно быть в stddef.h, но, если у вас его нет, пример реализации (из wikipedia ):

#define offsetof(st, m) \
    ((size_t) ( (char *)&((st *)(0))->m - (char *)0 ))

Для объединения смещение каждого поля равно 0.

3 голосов
/ 08 ноября 2010

Использование offsetof, от <stddef.h>.

(За исключением случаев, когда MSVC ++ 2008 не обеспечивает его, в этом случае реализуйте свой собственный, как Карл Норум. Хотя я почти уверен, что он существует с C89).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...