Macro de bibliothèque C - offsetof ()

La description

La macro de la bibliothèque C offsetof(type, member-designator) donne un entier constant de type size_tqui est le décalage en octets d'un membre de la structure depuis le début de la structure. Le membre est donné par membre-désignateur, et le nom de la structure est donné en type.

Déclaration

Voici la déclaration de la macro offsetof ().

offsetof(type, member-designator)

Paramètres

  • type - Il s'agit du type de classe dans lequel le membre-désignateur est un désignateur de membre valide.

  • member-designator - Il s'agit de l'indicateur de membre du type de classe.

Valeur de retour

Cette macro renvoie la valeur de type size_t qui est la valeur de décalage du membre dans le type.

Exemple

L'exemple suivant montre l'utilisation 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);
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

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