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;

---
藤井宏憲