6.53 Поддержка offsetof ¶
GCC реализует для C и C++ синтаксическое расширение для реализации макроса offsetof.
primary:
"__builtin_offsetof" "(" typename "," offsetof_member_designator ")"
offsetof_member_designator:
identifier
| offsetof_member_designator "." identifier
| offsetof_member_designator "[" expr "]"
Этого расширения достаточно, чтобы
#define offsetof(type, member) __builtin_offsetof (type, member)
было подходящим определением макроса offsetof. В C++, type может быть зависимым. В любом случае, member может состоять из одного идентификатора или последовательности обращений к членам и ссылок на массивы.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.5.0/gcc/Offsetof.html