table of contents
- trixie-backports 4.29.1-1~bpo13+1
- testing 4.29.1-1
- unstable 4.29.1-1
| offsetof(3) | Library Functions Manual | offsetof(3) |
BEZEICHNUNG¶
offsetof - Versatz eines Strukturelements
BIBLIOTHEK¶
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT¶
#include <stddef.h>
size_t offsetof(Typ, Element);
BESCHREIBUNG¶
Das Makro offsetof() liefert den Versatz des Feldes Element vom Anfang der Struktur Typ.
Dieses Makro ist nützlich, da sich die Größen der Felder, die eine Struktur aufbauen, zwischen Implementierungen unterscheiden können und Compiler eine verschiedene Anzahl an Auffüll-Bytes zwischen Feldern hinzufügen können. Daher ist der Versatz eines Elementes nicht notwendigerweise durch die Summe der Größen der vorherigen Elemente gegeben.
Falls Element nicht an einer Byte-Grenze ausgerichtet ist (d.h. es ein Bit-Feld ist), führt dies zu einem Compiler-Fehler.
RÜCKGABEWERT¶
offsetof() liefert den Versatz des angegebenen Elements innerhalb des angegebenen Typs in Byte-Einheiten zurück.
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 <stddef.h>
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
struct s {
int i;
char c;
double d;
char a[];
};
/* Ausgabe ist Compiler-abhängig */
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);
}
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.
| 15. Juni 2024 | Linux man-pages 6.9.1 |