Re: 構造体のメンバの記憶域の順
MAEDA Atusi wrote:
> キャストを使う
> struct sockaddr_in inet_addr;
> ...
> bind(fd, (struct sockaddr *)&inet_addr, ...);
> とか.
>
> あるいはunionを使ったXEventとか.
>
> どっちも「structの先頭で同じ宣言の仕方をすれば,同じようにメンバが割り
> 付けられる」と仮定しないと動かないでしょう.
共用体のなかの構造体だけは特別に保証されるそうです。
構造体の先頭に詰め物がされないことになっているので、
以下のような継承もできそうです。
struct object {
int id;
};
struct rect {
struct object object;
int width, height;
};
struct window {
struct rect rect;
int x, y;
};
struct window w;
((struct object*)&w)->id = WINDOW_ID;
---
藤井宏憲
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735