Unix/Linux Go Back    


Linux 2.6 - man page for offsetof (linux section 3)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


OFFSETOF(3)			    Linux Programmer's Manual			      OFFSETOF(3)

NAME
       offsetof - offset of a structure member

SYNOPSIS
       #include <stddef.h>

       size_t offsetof(type, member);

DESCRIPTION
       The  macro  offsetof() returns the offset of the field member from the start of the struc-
       ture 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).

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

CONFORMING TO
       C89, C99, POSIX.1-2001.

EXAMPLE
       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>

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

	   /* Output is compiler dependent */

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

	   exit(EXIT_SUCCESS);
       }

COLOPHON
       This page is part of release 3.55 of the Linux man-pages project.  A  description  of  the
       project,     and    information	  about    reporting	bugs,	 can	be    found    at
       http://www.kernel.org/doc/man-pages/.

GNU					    2008-07-12				      OFFSETOF(3)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 08:20 AM.