Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

offsetof(3c) [opensolaris man page]

offsetof(3C)						   Standard C Library Functions 					      offsetof(3C)

NAME
offsetof - offset of structure member SYNOPSIS
#include <stddef.h> size_t offsetof(type, member-designator); DESCRIPTION
The offsetof() macro defined in <stddef.h> expands to an integral constant expression that has type size_t. The value of this expression is the offset in bytes to the structure member (designated by member-designator) from the beginning of its structure (designated by type). ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ SEE ALSO
attributes(5) SunOS 5.11 29 Dec 1996 offsetof(3C)

Check Out this Related Man Page

OFFSETOF(3)						     Linux Programmer's Manual						       OFFSETOF(3)

NAME
offsetof - offset of a structure member SYNOPSIS
#include <stddef.h> size_t offsetof(type, member); DESCRIPTION
The macro offsetof() returns the offset of the field member from the start of the structure type. 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 if member is not aligned to a byte boundary (i.e., it is a bit field). RETURN VALUE
offsetof() returns the offset of the given member within the given type, in units of bytes. CONFORMING TO
C89, C99, POSIX.1-2001. EXAMPLE
On a Linux/i386 system, when compiled using the default gcc(1) options, the program below produces the following output: $ ./a.out offsets: i=0; c=4; d=8 a=16 sizeof(struct s)=16 Program 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=%ld; c=%ld; d=%ld a=%ld ", (long) offsetof(struct s, i), (long) offsetof(struct s, c), (long) offsetof(struct s, d), (long) offsetof(struct s, a)); printf("sizeof(struct s)=%ld ", (long) sizeof(struct s)); exit(EXIT_SUCCESS); } COLOPHON
This page is part of release 3.27 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/. GNU
2008-07-12 OFFSETOF(3)
Man Page

3 More Discussions You Might Find Interesting

1. Programming

Address Alignment rules for structure variables

Hi, This question might look naive, but I need to know address alignment rules used by O/S, hence posting this one. I've following 2 structures :- struct xyz { char a; int b; char c; } struct abc { char a; char c; int b; } If I print size... (2 Replies)
Discussion started by: anijog
2 Replies

2. Programming

Array alignment on HPUX

Hi, I'm porting code from Windows to HP-UX 11.23, using gcc (I'm begining to suspect this might not be the best choice, but I thought it would be most compatible since we've already compiled on Linux with gcc). I have in my code something similar to the folowing: unsigned char *ch_arr =... (4 Replies)
Discussion started by: rimon
4 Replies

3. Programming

calling pthread_self (on ubuntu), expensive?

Hi all, Is anyone aware of what operations are involved when a call to pthread_self() is made, obtaining the unique thread ID on a Ubuntu system (or even any Linux flavour)? Specifically, to retrieve the thread id, is there any locking required or atomic operations? I'm building an... (11 Replies)
Discussion started by: gorga
11 Replies