offsetof(3) — Linux manual page
offsetof(3) Library Functions Manual offsetof(3)
NAME
offsetof - offset of a structure member
LIBRARY
Standard C library (libc, -lc)
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 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).
RETURN VALUE
offsetof() returns the offset of the given member within the
given type, in units of bytes.
STANDARDS
C11, POSIX.1-2008.
HISTORY
POSIX.1-2001, C89.
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
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=%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);
}
COLOPHON
This page is part of the man-pages (Linux kernel and C library
user-space interface documentation) project. Information about
the project can be found at
⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report
for this manual page, see
⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
This page was obtained from the tarball man-pages-6.9.1.tar.gz
fetched from
⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
2024-06-26. If you discover any rendering problems in this HTML
version of the page, or you believe there is a better or more up-
to-date source for the page, or you have corrections or
improvements to the information in this COLOPHON (which is not
part of the original manual page), send a mail to
man-pages@man7.org
Linux man-pages 6.9.1 2024-06-15 offsetof(3)
Pages that refer to this page: readdir(3), size_t(3type)