From: SHIROYAMA Takayuki Date: 1997-08-25T22:08:25+09:00 Subject: [ruby-list:3811] RUBY on NeXT ども、白山@fortune.nest.or.jpです。 NeXTSTEP3.3J for Motorolra 上で ruby-1.0-970819.tar.gz の コンパイルに成功したので、報告致します。 ほぼ configure ; make でOKだったのですが、 parse.y:2326: only 0 args to macro 'atof' (1 expected) sprintf.c:565: only 0 args to macro 'atof' (1 expected) string.c:1203: only 0 args to macro 'atof' (1 expected) marshal.c:619: only 0 args to macro 'atof' (1 expected) の4か所でエラーが出ました。 いづれも double atof();という宣言がひっかかってまして、 これは、stdlib.hにて ---------------------------------------------------------- #ifdef __STDC__ extern double atof(const char *nptr); #define atof(nptr) strtod(nptr, (char **)NULL) extern int atoi(const char *nptr); ---------------------------------------------------------- っと宣言されていて、 atof()という関数はあるのですが、 普通にincludeすると atofは strtod()を呼び出すマクロと して扱われてしまうため、宣言をマクロとして展開しよう として、引き数がない・・・っとエラーになっている 模様です。 なんでこう(atofがマクロに)なってるのか私には分からない のですが(^^;)(他のOSでもこうなっているものあります?)、 1. 上記各所の double atof();という宣言をコメントアウトする。 2. 前記各所の直前で #undef atof を追加して マクロ atof()を 消してしまう のどっちかをすれば回避出来ます。 気になったので atof()関数を呼ぶ場合と、マクロatofが展開 されて strtod関数が呼ばれてくる場合を簡単なプログラムで 動作を比較してみたのですが、どっちも変わりないみたいです。 make testは無事とおりました、また dynamic loadもうまく いってるもようです。 なので、近日中にruby-1.0-970820.tar.gz をひろってきて NeXT用の Binary Package でも作ろうかと思います。 --- SHIROYAMA Takayuki