Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
OFFSETOF
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- EXEMPLE
- CONFORMITÉ
- TRADUCTION
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) de l'élément spécifié à
l'intérieur de la structure type.
EXEMPLE
Sur un système Linux/x86, 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()
{
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
",
(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
", (long) sizeof(struct s));
exit(EXIT_SUCCESS);
}
CONFORMITÉ
POSIX.1-2001.
TRADUCTION
Cette page de manuel a été traduite par Alain Portal
<aportal AT univ-montp2 DOT fr> en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|