offsetof - offset of a structure member


   #include <stddef.h>

   size_t offsetof(type, member);


   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).


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


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


   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

   Program source

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

       struct s {
           int i;
           char c;
           double d;
           char a[];

       /* Output is compiler dependent */

       printf("offsets: i=%zd; c=%zd; d=%zd a=%zd\n",
               offsetof(struct s, i), offsetof(struct s, c),
               offsetof(struct s, d), offsetof(struct s, a));
       printf("sizeof(struct s)=%zd\n", sizeof(struct s));



   This  page  is  part of release 4.09 of the Linux man-pages project.  A
   description of the project, information about reporting bugs,  and  the
   latest     version     of     this    page,    can    be    found    at

More Linux Commands

ccoshl(3) - complex hyperbolic cosine - Linux manual page...
The complex hyperbolic cosine function is defined as: ccosh(z) = (exp(z)+exp(-z))/2 VERSIONS These functions first appeared in glibc in version 2.1. CONFORMING

unstr(1) create a random access file for storing strings br
strfile reads a file containing groups of lines separated by a line containing a single percent % sign (or other specified delimiter character) and creates a da

Tcl_ChannelSetOptionProc(3) - procedures for creating and ma
Tcl uses a two-layered channel architecture. It provides a generic upper layer to enable C and Tcl programs to perform input and output using the same APIs for

wait(2) - wait for process to change state - Linux man page
All of these system calls are used to wait for state changes in a child of the calling process, and obtain information about the child whose state has changed.

SDL_JoystickGetButton(3) - Get the current state of a given
SDL_JoystickGetButton returns the current state of the given button on the given joystick. RETURN VALUE 1 if the button is pressed. Otherwise, 0. SEE ALSO SDL_J

rpmdeps(8) - Generate RPM Package Dependencies (Man Page)...
rpmdeps generates package dependencies for the set of FILE arguments. Each FILE argument is searched for Elf32/Elf64, script interpreter, or per-script dependen

XML::PatAct::MatchName(3pm) - A pattern module for matching
XML::PatAct::MatchName is a pattern module for use with PatAct drivers for applying pattern-action lists to XML parses or trees. XML::PatAct::MatchName is a sim

regtree(1) Textmode registry viewer - Linux manual page.....
The regtree utility prints out all the contents of a Windows registry file. Subkeys are printed with one level more indentation than their parents. OPTIONS --he

XListPixmapFormats(3) - image format functions and macros...
The XListPixmapFormats function returns an array of XPixmapFormatValues structures that describe the types of Z format images supported by the specified display

isprint_l(3) character classification functions (Man Page)
These functions check whether c, which must have the value of an unsigned char or EOF, falls into a certain character class according to the specified locale. T

logger(1) - a shell command interface to the syslog(3) syste
logger makes entries in the system log. It provides a shell command interface to the syslog(3) system log module. OPTIONS -d, --udp Use datagram (UDP) only. By

Encode::JP(3pm) - Japanese Encodings - Linux manual page....
To find out how to use this module in detail, see Encode. Note on ISO-2022-JP(-1)? ISO-2022-JP-1 ( RFC2237 ) is a superset of ISO-2022-JP ( RFC1468 ) which adds

We can't live, work or learn in freedom unless the software we use is free.