Wed, Oct 14, 1998 at 11:12:03AM +0900 において Yukihiro Matsumoto さん曰く: > |のようにして受けます。このとき、qが最初のlineを指していること > |が保証できるでしょうか? > > できないですね.ちょっと考えただけでもふたつの点でまずいです. > > * 64ビットマシンではポインタサイズはintのサイズより大きい > > * FIXNUMは1bitフラグに使っているのでポインタよりも1bitサイ > ズが小さい はーなるほど。前者は気付いてたんですが、後者は全然。 > しかし,前者はruby自身がlongとポインタサイズが等しいことを期 > 待してますから,rubyが動いてるマシンなら,longに変換すれば大 > 丈夫そうな気がします.LONG2NUM()やNUM2LONG()を使って下さいま > せ. わかりました。 > 後者はFIX系ではなくNUM系を使っているので問題ないか.でも, > ruby自身がポインタが偶数アドレスにアラインされていることを期 > 待しているので,こうした方が効率良いかも知れません. > > return (VALUE)(((long)line) | FIXNUM_FLAG); > > q = (char*)(p & ~FIXNUM_FLAG); ありがとうございます。これで当分シノがせていただきます。 -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani / sprintmail.com kikutani / debian.or.jp (Linux関係のみ)