Macro libreria C - offsetof ()

Descrizione

La macro della libreria C. offsetof(type, member-designator) restituisce un numero intero costante di tipo size_tche è l'offset in byte di un membro della struttura dall'inizio della struttura. Il membro è dato da member-designator e il nome della struttura è dato in type.

Dichiarazione

Di seguito è riportata la dichiarazione per offsetof () Macro.

offsetof(type, member-designator)

Parametri

  • type - Questo è il tipo di classe in cui il designatore di membri è un designatore di membri valido.

  • member-designator - Questo è il designatore di membri del tipo di classe.

Valore di ritorno

Questa macro restituisce il valore di tipo size_t che è il valore di offset del membro nel tipo.

Esempio

L'esempio seguente mostra l'utilizzo di offsetof () Macro.

#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);
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

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