Provided by: manpages-fr-dev_2.64.1-1_all bug

NOM

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

SYNOPSIS

       #include <stddef.h>

       size_t offsetof(type, membre);

DESCRIPTION

       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)  de  l’élément  spécifié  à
       l’intérieur de la structure type.

CONFORMITÉ

       C89, C99, POSIX.1-2001.

EXEMPLE

       Sur  un  système  Linux/x86,  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

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

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> ».