From: toyofuku@... Date: 2000-04-15T22:26:54+09:00 Subject: [ruby-list:21919] Re: #define const 豊福です。 まつもとさん >| そこで setenv CFLAGS -Ae してから(-Ae が ANSI >|にするオプション)configure したら #define const >|は出なくなりました。 > > それは良かった。 以前から -Ae のことは知っていたのですが、ruby の 仮引数は ANSI形式でないのでつけない方がよいだろうと 思っていました。今回のようなことを考えると、どこかに -Ae のことを説明しておくか、configure でなんとかした 方がよいでしょうか。 >|ですが、re.h の >| rb_mbclen2 _((unsigned char, VALUE)); >|と re.c の >| rb_mbclen2(c, re) >| unsigned char c; >| VALUE re; >|がぶつかってエラーになりました。 >| とりあえず unsigned int に変更して make しました。 > > これってよく分からないんですが、どこが問題なんですか? > ぶつかっているように見えないんですが。 私も明確にはわかってないのですが、 引数の char や float などはそれぞれ int, double などに 変換されるので旧式の書き方だと unsigned int として引数 が扱われるためだと思います。 ANSI式で書いたときと旧式で書いたときで実行時の結果に 違いが出ることがあるのかどうかはわかりません。Soralis と cygwin で試したところではどちらの書き方でも同じ結果 になるようです。 近くにあるマシンで調べたところ、旧式の書き方とプロト タイプ宣言がぶつかったときのコンパイラの態度は HP-UX エラー VC++ エラー Solaris 警告 cygwin 問題なし のようです。 --- 豊福 toyofuku@juice.or.jp