Macro de biblioteca C - offsetof ()

Descripción

La macro de la biblioteca C offsetof(type, member-designator) da como resultado un entero constante de tipo size_tque es el desplazamiento en bytes de un miembro de estructura desde el principio de la estructura. El miembro se da por miembro-designador y el nombre de la estructura se da en tipo.

Declaración

A continuación se muestra la declaración de la macro offsetof ().

offsetof(type, member-designator)

Parámetros

  • type - Este es el tipo de clase en el que el designador de miembro es un designador de miembro válido.

  • member-designator - Este es el designador de miembro del tipo de clase.

Valor devuelto

Esta macro devuelve el valor de tipo size_t que es el valor de compensación del miembro en tipo.

Ejemplo

El siguiente ejemplo muestra el uso de la 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);
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

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