C言語なら俺に聞け(入門編)Part 87
■ このスレッドは過去ログ倉庫に格納されています
0800デフォルトの名無しさん
2011/08/07(日) 00:14:49.55# define obstack_int_grow(h,datum) \
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
obstack_int_grow_fast (h, datum))
# define obstack_int_grow_fast(h,aint) \
(((int *) ((h)->next_free += sizeof (int)))[-1] = (aint))
このマクロを読んでみると
チャンクの範囲を超えてるなら_obstack_newchunkで新しいチャンクを割り当て
超えてないならobstack_int_grow_fastでintデータ(datnum)を書き込むという流れらしいが
3行目の三項演算子の2項目で、_obstack_newchunk関数に引数を渡した後カンマを打って0をつけたり、その後3項目も0にする理由が分からない。
0そのままだと警告でるよね?
それから、obstack_int_grow_fastもややこしいけど
next_freeが指すポインタをintサイズだけ進ませたものを代入し直して、それに配列アクセスで増やしたintサイズのスペースにaintを書き込む・・・
この理解で合ってるのかな?
■ このスレッドは過去ログ倉庫に格納されています