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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 ⟨⟩.