Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       offsetof - decalajul unui membru al structurii

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <stddef.h>

       size_t offsetof(type, member);

DESCRIERE

       Macro offsetof() returnează decalajul câmpului member de la începutul structurii type.

       Această  macro  este  utilă  deoarece  dimensiunile  câmpurilor care compun o structură pot varia de la o
       implementare la alta, iar compilatorii pot insera numere diferite de octeți de umplutură  între  câmpuri.
       În consecință, decalajul unui element nu este neapărat dat de suma dimensiunilor elementelor anterioare.

       Se va produce o eroare de compilare dacă member nu este aliniat la o limită de octet (de exemplu, este un
       câmp de biți).

VALOAREA RETURNATĂ

       offsetof() returnează decalajul membrului member dat în cadrul tipului type dat, în unități de octeți.

STANDARDE

       C11, POSIX.1-2008.

ISTORIC

       POSIX.1-2001, C89.

EXEMPLE

       Pe  un sistem Linux/i386, atunci când este compilat folosind opțiunile implicite gcc(1), programul de mai
       jos produce următoarea ieșire:

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

   Sursa programului

       #include <stddef.h>
       #include <stdio.h>
       #include <stdlib.h>

       int
       main(void)
       {
           struct s {
               int i;
               char c;
               double d;
               char a[];
           };

           /* Ieșirea depinde de compilator */

           printf("decalaje: 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));

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                      offsetof(3)