offsetof

Autres langues

Langue: fr

Version: 23 mai 2006 (mandriva - 01/05/08)

Section: 3 (Bibliothèques de fonctions)

NOM

offsetof - Décalage du membre d'une structure

SYNOPSIS

#include <stddef.h>

size_t offsetof(type, member);

DESCRIPTION

La macro offsetof() renvoie le décalage du champ member à partir du début de la structure type.

Cette macro est utile car la taille des champs qui composent une structure peut varier suivant les implémentations, et les compilateurs peuvent ajouter plusieurs octets de remplissage entre les champs. Par conséquent, le décalage d'un élement n'est pas nécessairement donné par la somme des tailles des éléments qui le précèdent.

Une ereur compilateur surviendra si member n'est pas aligné sur une frontière d'octet (c'est-à-dire, si c'est un champ de bits).

VALEUR RENVOYÉE

offsetof() renvoie le décalage, en octets, de l'élément donné dans le type donné.

CONFORMITÉ

C89, C99, POSIX.1-2001.

EXEMPLE

Sur un système Linux/x86, lorsqu'il a été compilé avec les options par défaut de gcc(1), le programme suivant produit la sortie suivante :


    $ ./a.out
    offsets: i=0; c=4; d=8 a=16
    sizeof(struct s)=16

 #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=%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);
 }
 

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 10 août 2006 et révisée le 22 novembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 offsetof ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.