Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       offsetof - decalajul unui membru al structurii

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #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

       POSIX.1-2001, POSIX.1-2008, C99.

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 este dependentă 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));

           exit(EXIT_SUCCESS);
       }

TRADUCERE

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

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU
       Versiunea  3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.