offsetof(3) Library Functions Manual offsetof(3) BEZEICHNUNG offsetof - Versatz eines Strukturelements BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include size_t offsetof(Typ, Element); BESCHREIBUNG Das Makro offsetof() liefert den Versatz des Feldes Element vom Anfang der Struktur Typ. Dieses Makro ist nutzlich, da sich die Grossen der Felder, die eine Struktur aufbauen, zwischen Implementierungen unterscheiden konnen und Compiler eine verschiedene Anzahl an Auffull-Bytes zwischen Feldern hinzufugen konnen. Daher ist der Versatz eines Elementes nicht notwendigerweise durch die Summe der Grossen der vorherigen Elemente gegeben. Falls Element nicht an einer Byte-Grenze ausgerichtet ist (d.h. es ein Bit-Feld ist), fuhrt dies zu einem Compiler-Fehler. RUCKGABEWERT offsetof() liefert den Versatz des angegebenen Elements innerhalb des angegebenen Typs in Byte-Einheiten zuruck. STANDARDS C11, POSIX.1-2008. GESCHICHTE POSIX.1-2001, C89. BEISPIELE Auf einem Linux/i386-System produziert das nachfolgende Programm die folgende Ausgabe, wenn es mit den Standardoptionen von gcc(1) kompiliert wird: $ ./a.out Versatz: i=0; c=4; d=8 a=16 sizeof(struct s)=16 Programmquelltext #include #include #include int main(void) { struct s { int i; char c; double d; char a[]; }; /* Ausgabe ist Compiler-abhangig */ printf("Versatz: 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); } UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer: . Linux man-pages 6.17 8. Februar 2026 offsetof(3)