C библиотека макросов - offsetof ()
C стандартная библиотека - <stddef.h>
описание
C библиотека макросовoffsetof (типа, член-целеуказателем) будет генерировать постоянное число типа size_t,который является структурным членом структуры по отношению к началу смещения байта. Член с членом-целеуказателем, было в названии типа структуры приведен.
заявление
Вот offsetof () макро заявлении.
offsetof(type, member-designator)
параметры
- тип - это тип класса, в котором, член-указатель является действительным членом индикатора.
- член-указатель - который является членом индикатора типа класса.
Возвращаемое значение
Этот макрос возвращает значение типаsize_t, показывающий тип смещения членов.
примеров
Следующий пример демонстрирует offsetof () использования макроса.
#include <stddef.h> #include <stdio.h> struct address { char name[50]; char street[50]; int phone; }; int main() { printf("address 结构中的 name 偏移 = %d 字节。\n", offsetof(struct address, name)); printf("address 结构中的 street 偏移 = %d 字节。\n", offsetof(struct address, street)); printf("address 结构中的 phone 偏移 = %d 字节。\n", offsetof(struct address, phone)); return(0); }
Давайте скомпилировать и запустить эту программу, которая приведет к следующему:
address 结构中的 name 偏移 = 0 字节。 address 结构中的 street 偏移 = 50 字节。 address 结构中的 phone 偏移 = 100 字节。