Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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.

STANDARDS

       C11, POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, C89.

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

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>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre  Giraud
       <jean-pierregiraud@neuf.fr>

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