offsetof

Autres langues

Langue: ja

Autres versions - même langue

Version: 2006-05-23 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

offsetof - ¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤Î¥ª¥Õ¥»¥Ã¥È¤òÊÖ¤¹

½ñ¼°

#include <stddef.h>

size_t offsetof(type, member);

ÀâÌÀ

offsetof() ¥Þ¥¯¥í¤Ï¡¢¥Õ¥£¡¼¥ë¥É member ¤Î ¹½Â¤ÂÎ type ¤ÎÀèƬ¤«¤é¤Î¥ª¥Õ¥»¥Ã¥È¤òÊÖ¤¹¡£

¤³¤Î¥Þ¥¯¥í¤¬Í­ÍѤʤΤϡ¢ ¹½Â¤ÂΤò¹½À®¤¹¤ë¥Õ¥£¡¼¥ë¥É¤Î¥µ¥¤¥º¤Ï¼ÂÁõ¤Ë¤è¤Ã¤ÆÊѲ½¤¹¤ë¤·¡¢ ¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤ê¥Õ¥£¡¼¥ë¥É´Ö¤ËÁÞÆþ¤¹¤ë¥Ñ¥Ç¥£¥ó¥°¤Î¥Ð¥¤¥È¿ô¤â °ã¤¦²ÄǽÀ­¤¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£ ¤½¤Î·ë²Ì¡¢¤¢¤ë¥¨¥ì¥á¥ó¥È¤Î¥ª¥Õ¥»¥Ã¥È¤Ïɬ¤º¤·¤â¤½¤ì¤è¤êÁ°¤Î ¥¨¥ì¥á¥ó¥È¤Î¥µ¥¤¥º¤Î¹ç·×¤È¤Ï¤Ê¤é¤Ê¤¤¡£

member ¤¬¥Ð¥¤¥È¶­³¦¤Ë°ÌÃÖ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç (¤¹¤Ê¤ï¤Á¡¢¥Ó¥Ã¥È¥Õ¥£¡¼¥ë¥É¤Î¾ì¹ç) ¤Ë¤Ï¡¢ ¥³¥ó¥Ñ¥¤¥é¤Ç¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¡£

ÊÖ¤êÃÍ

offsetof() ¤Ï¡¢»ØÄꤵ¤ì¤¿¥¨¥ì¥á¥ó¥È¤Î»ØÄꤵ¤ì¤¿·¿¤ÎÃæ¤Ç¤Î ¥ª¥Õ¥»¥Ã¥È¤ò¡¢¥Ð¥¤¥Èñ°Ì¤ÇÊÖ¤¹¡£

½àµò

C89, C99, POSIX.1-2001.

Îã

Linux/x86 ¥·¥¹¥Æ¥à¤Ç¡¢ gcc(1) ¤Î¥Ç¥Õ¥©¥ë¥È¥ª¥×¥·¥ç¥ó¤Ç ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¾ì¹ç¡¢²¼µ­¤Î¥×¥í¥°¥é¥à¤Ï°Ê²¼¤Î¤è¤¦¤Ê½ÐÎϤòÊÖ¤¹¡£


    $ ./a.out
    offsets: i=0; c=4; d=8 a=16
    sizeof(struct s)=16


#include <stddef.h>

#include <stdio.h>

#include <stdlib.h>



int

main(void)

{

    struct s {

        int i;

        char c;

        double d;

        char a[];

    };



    /* ½ÐÎϤϥ³¥ó¥Ñ¥¤¥é°Í¸¤Ç¤¢¤ë */



    printf("offsets: i=%ld; c=%ld; d=%ld a=%ld\n",

            (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\n", (long) sizeof(struct s));



    exit(EXIT_SUCCESS);

}