Provided by: manpages-fr-dev_3.57d1p1-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)  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.57 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

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Alain Portal <http://manpagesfr.free.fr/> (2006). Nicolas François et l'équipe francophone
       de traduction de Debian (2006-2009).

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