Provided by: manpages-fr-dev_4.13-4_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É

       POSIX.1-2001, POSIX.1-2008, C89, C99.

EXEMPLES

       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("offsets: i=%zu; c=%zu; d=%zu a=%zu\n",
                   offsetof(struct s, i), offsetof(struct s, c),
                   offsetof(struct s, d), offsetof(struct s, a));
           printf("sizeof(struct s)=%zu\n", sizeof(struct s));

           exit(EXIT_SUCCESS);
       }

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions pour signaler des anomalies et la dernière version de cette page  peuvent  être  trouvées  à
       l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier   <barbier@debian.org>   et   David   Prévot
       <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous  découvrez  un  bogue  dans la traduction de cette page de manuel, veuillez envoyer un message à
       debian-l10n-french@lists.debian.org.

GNU                                              1 novembre 2020                                     OFFSETOF(3)