logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

offsetof - offset of a structure member

Description

       The macro offsetof() returns the offset of the field member from the start of the structure type.

       This  macro  is  useful  because  the  sizes  of  the  fields  that  compose  a structure can vary across
       implementations,  and  compilers  may  insert  different  numbers  of  padding  bytes   between   fields.
       Consequently,  an  element's  offset  is  not  necessarily  given by the sum of the sizes of the previous
       elements.

       A compiler error will result if member is not aligned to a byte boundary (i.e., it is a bit field).

Examples

       On a Linux/i386 system, when compiled using the default gcc(1) options, the program  below  produces  the
       following output:

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

   Programsource

       #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);
       }

Linux man-pages 6.9.1                              2024-06-15                                        offsetof(3)

History

       POSIX.1-2001, C89.

Library

       Standard C library (libc, -lc)

Name

       offsetof - offset of a structure member

Return Value

offsetof() returns the offset of the given member within the given type, in units of bytes.

Standards

       C11, POSIX.1-2008.

Synopsis

#include<stddef.h>size_toffsetof(type,member);

See Also