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)
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)
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)
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)