Macro da biblioteca C - offsetof ()

Descrição

A macro da biblioteca C offsetof(type, member-designator) resulta em um número inteiro constante do tipo size_tque é o deslocamento em bytes de um membro da estrutura desde o início da estrutura. O membro é dado por membro-designador e o nome da estrutura é fornecido em tipo.

Declaração

A seguir está a declaração da macro offsetof ().

offsetof(type, member-designator)

Parâmetros

  • type - Este é o tipo de classe em que o membro designador é um designador de membro válido.

  • member-designator - Este é o designador de membro do tipo de classe.

Valor de retorno

Esta macro retorna o valor do tipo size_t que é o valor de deslocamento do membro no tipo.

Exemplo

O exemplo a seguir mostra o uso da macro offsetof ().

#include <stddef.h>
#include <stdio.h>

struct address {
   char name[50];
   char street[50];
   int phone;
};
   
int main () {
   printf("name offset = %d byte in address structure.\n",
   offsetof(struct address, name));

   printf("street offset = %d byte in address structure.\n",
   offsetof(struct address, street));

   printf("phone offset = %d byte in address structure.\n",
   offsetof(struct address, phone));

   return(0);
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

name offset = 0 byte in address structure.
street offset = 50 byte in address structure.
phone offset = 100 byte in address structure.