From: toyofuku@... Date: 1997-08-19T13:27:04+09:00 Subject: [ruby-list:3710] Re: MSVC compile error 豊福@パパイヤです。 木村さん >> parse.c の中にでてくる FLOAT と windef.h >> のFLOAT と名前がぶつかったことと、parse.c の中で#define IN 276 >> しているはずの IN が未定義変数エラーになった(MSVC のバグ?) >> ことでした。 > IN の方は心当たりがあるのですが、FLOATの方はありません。 > お使いになった VCのバージョンはいくつでしょうか? MSVC2.0 です。windef.h の先頭には /*++ BUILD Verion: 0001 とありました。 > で、INの方ですが、こいつも windef.hあたりに > #define IN > なんてのがあります。関数の引数が入力であることを示すためのマクロ > のようですが。で、何もしないと parse.c で #defineしたIN とぶつか > る(VC 4.xだとwarningになります)ので、missing/nt.hで #undef IN し > て windef.hの定義を消してます。 なるほど。ありました。 > makefile にある通り byaccで parse.cを作ると、ruby.h のインクルー > ド (この中で最終的に missing/nt.hがインクルードされます)をした後 > で%tokenに対応する #define IN 257 (だったかな?)が来るので「未定義」 > にはならないのですが… > bison -d parse.y > で parse.cを作って、最初の方で #include "parse.h" なんてのは… > ないですよね^^; Linux で parse.c を作ったのですが (bison -y parse.y; mv -f y.tab.c parse.c と出ました) %tokenに対応する #define IN 276 が最初に来て、その後に #include "ruby.h" が来ています。 FLOAT の方も #define FLOAT 298 が最初に来てその後に、 windef.h 内の typedef float FLOAT; が来るようです。 --- 豊福@パパイヤ unbound@papaya.juice.or.jp toyofuku@juice.or.jp