offsetof()

Return the offset of an element within a structure

Synopsis:

#include <stddef.h>

#define offsetof( composite, name ) …

Arguments:

composite
A struct or union.
name
The name of an element in composite.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The offsetof() macro returns the offset of the element name within the struct or union composite.

This provides a portable method to determine the offset.

Returns:

The offset of name.

Examples:

#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>

struct new_def
{
    char *first;
    char second[10];
    int third;
};

int main( void )
{
    printf( "first:%d second:%d third:%d\n",
            offsetof( struct new_def, first ),
            offsetof( struct new_def, second ),
            offsetof( struct new_def, third ) );
            
    return EXIT_SUCCESS;
}

Classification:

ANSI, POSIX 1003.1

Safety:
Cancellation point No
Interrupt handler Yes
Signal handler Yes
Thread Yes

Caveats:

This is a macro.