Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


offsetof(3) — Linux manual page

NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |STANDARDS |HISTORY |EXAMPLES |COLOPHON

offsetof(3)              Library Functions Manualoffsetof(3)

NAME        top

       offsetof - offset of a structure member

LIBRARY        top

       Standard C library (libc,-lc)

SYNOPSIS        top

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

DESCRIPTION        top

       The macrooffsetof() returns the offset of the fieldmember from       the start of the structuretype.       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 ifmember is not aligned to a byte       boundary (i.e., it is a bit field).

RETURN VALUE        top

offsetof() returns the offset of the givenmember within the giventype, in units of bytes.

STANDARDS        top

       C11, POSIX.1-2008.

HISTORY        top

       POSIX.1-2001, C89.

EXAMPLES        top

       On a Linux/i386 system, when compiled using the defaultgcc(1)       options, the program below produces the following output:           $./a.out           offsets: i=0; c=4; d=8 a=16           sizeof(struct s)=16Program 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        top

       This page is part of theman-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.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  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 isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17offsetof(3)

Pages that refer to this page:readdir(3)size_t(3type)


Copyright and license for this manual page


HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp