Макрос обозначает тип определенного члена структуры. Комментарий пытается объяснить это:
/* Type of MEMBER in struct type TYPE. */
#define _IO_MEMBER_TYPE(TYPE, MEMBER) __typeof__ (((TYPE){}).MEMBER)
Макрос используется только здесь:
/* Essentially ((TYPE *) THIS)->MEMBER, but avoiding the aliasing
violation in case THIS has a different pointer type. */
#define _IO_CAST_FIELD_ACCESS(THIS, TYPE, MEMBER) \
(*(_IO_MEMBER_TYPE (TYPE, MEMBER) *)(((char *) (THIS)) \
+ offsetof(TYPE, MEMBER)))
Эта конструкция использует различные расширения GCC для реализации наследования классов в стиле C ++. Прямой способ написания этого больше не работает (или не вызывает предупреждения) с последними версиями GCC. (Код libio
и C ++ ABI, который он реализует, относятся к GCC 2.95 в 90-х годах.)
Этот код довольно плохой, и вы действительно не должны использовать его в качестве модели для чего-либо.