offsetof(3) - wariua/manpages-ko GitHub Wiki
offsetof - ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ๋ด๋ถ ์์น
#include <stddef.h>
size_t offsetof(type, member);
๋งคํฌ๋ก offsetof()
๋ ๊ตฌ์กฐ์ฒด type
์ ์์์ ๊ธฐ์ค member
ํ๋์ ์์น๋ฅผ ๋ฐํํ๋ค.
์ด ๋งคํฌ๋ก๊ฐ ์ ์ฉํ ์ด์ ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ด๋ฃจ๋ ํ๋๋ค์ ํฌ๊ธฐ๊ฐ ๊ตฌํ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ผ๋ฉฐ ์ปดํ์ผ๋ฌ๊ฐ ํ๋๋ค ์ฌ์ด์ ํจ๋ฉ ๋ฐ์ดํธ๋ค์ ๋ค๋ฅด๊ฒ ์ฝ์ ํ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ ์์์ ์คํ์ ์ด ๋ฐ๋์ ์์ชฝ ์์๋ค์ ํฌ๊ธฐ์ ํฉ์ผ๋ก ์ ํด์ง์ง ์๋๋ค.
member
๊ฐ ๋ฐ์ดํธ ๊ฒฝ๊ณ์ ์ ๋ ฌ๋์ด ์์ง ์์ผ๋ฉด (์ฆ ๋นํธ ํ๋์ด๋ฉด) ์ปดํ์ผ๋ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
offsetof()
๋ ์ฃผ์ด์ง type
๋ด์์ ์ฃผ์ด์ง member
์ ๋ฐ์ดํธ ๋จ์ ์คํ์
์ ๋ฐํํ๋ค.
POSIX.1-2001, POSIX.1-2008, C89, C99.
๋ฆฌ๋
์ค/i386 ์์คํ
์์ 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=%zd; c=%zd; d=%zd a=%zd\n",
offsetof(struct s, i), offsetof(struct s, c),
offsetof(struct s, d), offsetof(struct s, a));
printf("sizeof(struct s)=%zd\n", sizeof(struct s));
exit(EXIT_SUCCESS);
}
2019-03-06