我是靠谱客的博主 威武悟空,这篇文章主要介绍offsetof函数的应用,现在分享给大家,希望可以做个参考。

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  ele‐
    ments.


    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=%ldn",
        (long) offsetof(struct s, i),
        (long) offsetof(struct s, c),
        (long) offsetof(struct s, d),
        (long) offsetof(struct s, a));
    printf("sizeof(struct s)=%ldn", (long) sizeof(struct s));


    exit(EXIT_SUCCESS);
}


最后

以上就是威武悟空最近收集整理的关于offsetof函数的应用的全部内容,更多相关offsetof函数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(117)

评论列表共有 0 条评论

立即
投稿
返回
顶部