73 lines
1.8 KiB
Groff
73 lines
1.8 KiB
Groff
.\" $NetBSD: offsetof.3,v 1.5 2011/04/14 06:56:28 wiz Exp $
|
|
.\"
|
|
.\" $OpenBSD: offsetof.3,v 1.2 2010/02/18 18:30:19 jmc Exp $
|
|
.\"
|
|
.\" Copyright (c) 2010 Thomas Pfaff <tpfaff@tp76.info>
|
|
.\"
|
|
.\" Permission to use, copy, modify, and distribute this software for any
|
|
.\" purpose with or without fee is hereby granted, provided that the above
|
|
.\" copyright notice and this permission notice appear in all copies.
|
|
.\"
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
.\"
|
|
.\"
|
|
.Dd April 1, 2011
|
|
.Dt OFFSETOF 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm offsetof
|
|
.Nd offset of a structure member
|
|
.Sh SYNOPSIS
|
|
.In stddef.h
|
|
.Ft size_t
|
|
.Fn offsetof "type" "member"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Fn offsetof
|
|
macro expands to an integer constant expression of type
|
|
.Ft size_t
|
|
and yields the offset,
|
|
in bytes, of the field
|
|
.Ar member
|
|
from the start of the structure
|
|
.Ar type .
|
|
.Pp
|
|
A compiler error will result if
|
|
.Ar member
|
|
is not aligned to a byte boundary (i.e. it is a bit-field).
|
|
.Sh EXAMPLES
|
|
Regardless of the architecture and the
|
|
.Tn ABI ,
|
|
the following example prints the value zero for the variable
|
|
.Va x .
|
|
.Bd -literal -offset indent
|
|
struct example {
|
|
double x;
|
|
int y;
|
|
char z;
|
|
};
|
|
|
|
size_t x, y, z;
|
|
|
|
x = offsetof(struct example, x);
|
|
y = offsetof(struct example, y);
|
|
z = offsetof(struct example, z);
|
|
|
|
(void)printf("%zu %zu %zu\en", x, y, z);
|
|
.Ed
|
|
.Sh SEE ALSO
|
|
.Xr __alignof__ 3 ,
|
|
.Xr stddef 3 ,
|
|
.Xr typeof 3
|
|
.Sh STANDARDS
|
|
The
|
|
.Fn offsetof
|
|
macro conforms to
|
|
.St -ansiC .
|