Man page - offsetof(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

offsetof

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
STANDARDS
HISTORIQUE
EXEMPLES
Source du programme
TRADUCTION

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 .