OFFSETOF

Section : Manuel du programmeur Linux (3)
Mise à jour de la version anglaise : 23 mai 2006
Index Menu principal  

NOM

offsetof - Décalage d'un 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 selon les implémentations, et les compilateurs peuvent insérer plusieurs octets de remplissage entre les champs. Par conséquent, le décalage d'un élément n'est pas nécessairement donné par la somme des tailles des éléments qui le précèdent.

Une erreur de compilateur se produira si member n'est pas aligné sur une frontière d'octet (c'est-à-dire, s'il s'agit d'un champ de bits).  

VALEUR RENVOYÉE

offsetof() renvoie le décalage, en octets, du membre donné de la structure type donnée.  

CONFORMITÉ

C89, C99, POSIX.1-2001.  

EXEMPLE

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

#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("décalages : 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 17 juillet 2008.

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.

 

Index

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
CONFORMITÉ
EXEMPLE
TRADUCTION

Dernière mise à jour : 17 juillet 2008