How can I determine the byte offset of a field within a structure?
ANSI C defines the offsetof() macro, which should be used if available; see <stddef.h>. If you don't have it, one possible implementation is
#define offsetof(type, mem) ((size_t) \ ((char *)&((type *)0)->mem - (char *)(type *)0))
This implementation is not 100% portable; some compilers may legitimately refuse to accept it.
See question 2.15 for a usage hint.
References:
ANSI Sec. 4.1.5
ISO Sec. 7.1.6
Rationale Sec. 3.5.4.2
H&S Sec. 11.1 pp. 292-3
Read sequentially: prev next up top
This page by Steve Summit // Copyright 1995 // mail feedback