Loading

NOM

       offsetof - Décalage d’un membre d’une structure

SYNOPSIS

       #include <stddef.h>

       size_t offsetof(type, member);

       La  macro  offsetof()  renvoie  le décalage du champ membre à partir du
       début de la structure type.

       Cette macro est utile car  la  taille  des  champs  qui  composent  une
       structure  peut  varier  d’une  implémentation  à l’autre. De plus, les
       compilateurs peuvent insèrer des  octets  entre  les  champs  pour  des
       questions  d’alignement,  le  nombre  de ces octets dépendant de chaque
       compilateur. Ainsi, le décalage d’un élément n’est pas forcément égal à
       la somme des tailles des membres qui le précèdent.

       Une erreur de compilateur sera signalée si membre n’est pas aligné avec
       une frontière d’octet (c’est-à-dire qu’il s’agit d’un champ de bits).

VALEUR RENVOYÉE

       offsetof() renvoie  le  décalage  (en  octets)  du  membre  spécifié  à
       l’intérieur de la structure type.

CONFORMITÉ

       C89, C99, POSIX.1-2001.

EXEMPLE

       Sur  un  système  Linux/i386, le programme ci-dessous, compilé avec les
       options par défaut de gcc(1), affichera le résultat suivant :

           $ ./a.out
           décalages: i=0 c=4 d=8 a=16
           sizeof(struct s)=16

   Source du programme

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

       int
       main(void)
       {
           struct s {
               int i;
               char c;
               double d;
               char a[];
           };

           /* La sortie dépend du compilateur */

           printf("décalages: i=%ld c=%ld d=%ld a=%ld\n",
                   (long) offsetof(struct s, i),
                   (long) offsetof(struct s, c),
                   (long) offsetof(struct s, d),
                   (long) offsetof(struct s, a));
           printf("sizeof(struct s)=%ld\n", (long) sizeof(struct s));

           exit(EXIT_SUCCESS);
       }

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite  par Alain Portal <aportal AT
       univ-montp2  DOT   fr>   en   2006,   et   mise   à   disposition   sur
       http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>    et    l’équipe   francophone   de
       traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».