Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

offsetof(3) [freebsd man page]

OFFSETOF(3)						   BSD Library Functions Manual 					       OFFSETOF(3)

NAME
offsetof -- offset of a structure member SYNOPSIS
#include <stddef.h> size_t offsetof(type, member); DESCRIPTION
The offsetof() macro expands to an integer constant expression of type size_t and yields the offset, in bytes, of the field member from the start of the structure type. A compiler error will result if member is not aligned to a byte boundary (i.e. it is a bit-field). STANDARDS
The offsetof() macro conforms to ANSI X3.159-1989 (``ANSI C89''). BSD
February 18, 2010 BSD

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.53 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