Provided by: manpages-fr-dev_4.27.0-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[];
           };

           /* Output is compiler dependent */

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

Pages du manuel de Linux 6.9.1                    15 juin 2024                                       offsetof(3)