C/C++の宿題片付けます 159代目at TECH
C/C++の宿題片付けます 159代目 - 暇つぶし2ch588: ◆GnxmqzQNd3uR
12/08/28 05:12:56.58
>>587
ありがとうございます。

以下のような構造体を作ることは可能なのでしょうか?
可変長の部分は結局ポインタで繋げることになるのでしょうか?

構造体1
|=DWORD aa;
|-int bb;
|-構造体2[bb]
||-int count;
|\-DWORD aaa;
\-構造体3[bb]
|-char foobar[0][50];
|-char foobar[1][50];
\-char foobar[2][50];

589:デフォルトの名無しさん
12/08/28 05:27:50.84
>>588
>可変長の部分は結局ポインタで繋げることになるのでしょうか?
そうなるね

typedef struct {
  int attr;
  int num;
  int items[ ];
} info_t;

info_t *info = malloc(sizeof(info_t) + sizeof(int) * num);
info->num = num;

構造体の最後のメンバである時に限って0長配列メンバは可能だけど
これは全メンバのアドレスが決まっているから可能

590:デフォルトの名無しさん
12/08/28 06:12:13.24
>>589
0長配列が使える様になったのは何時ごろからか知ってる?
昔、Xlib とかの構造体では items[1] とかやってて面倒だった記憶が有るんだけど

591:デフォルトの名無しさん
12/08/28 06:41:31.08
>>590
規格としてはC99からっぽい
URLリンク(seclan.dll.jp)

MS-C ver.6から使えたが、ANSI準拠ではないので大っぴらには使ってなかったようだ

typedef struct tagBITMAPINFO {
  BITMAPINFOHEADER bmiHeader;
  RGBQUAD bmiColors[1];
} BITMAPINFO;


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch