山本です。 >うーん、じゃあ、こうしませんか。明らかに問題がない部分だけ >protoizeして、問題がある部分variable.cとかは当面そのまま放置 >で、少しずつ解消するということで。 > >そうすると、山本さんの作業も無駄にならず、整理も付くのではな >いでしょうか。ちょっとうっかりしてarray.cだけ私でprotoizeし >てしまいましたが。 そうですね、少なくとも同一ファイル内ではプロトタイプの恩恵を 受けられるわけですし、賛成です。(現状では警告が出ますが、 少しずつ修正していくということで) >rb_thread_yieldにはthを渡したいが、他の関数には渡す必要はあ >りません。が、たかだかこのためにコードをコピーしたくありませ >んし、やロジックを複雑にする無駄な条件分岐を導入したくもあり >ません。 > ># なんかますますANSI prototypeが嫌いになってきた 気持ちはわかります。気づいたんですが、 void func(void (*hoge)(ANYARGS)) { VALUE obj1; hoge(obj1); } としてるコードに、新しく別の値を渡したくなって void func(void (*hoge)(ANYARGS)) { VALUE obj1, obj2; hoge(obj1, obj2); } としても、余分な引数が切り捨てられるなら古いコールバック関数を 書き換える必要がないんですね。 ([ruby-dev:26998]のようにプロトタイプがないとおかしくなる場合はこの技は使えませんが あれって double でだけ起きるのかな・・・) >この辺はANSI prototypeによるうれしさとはあんまり関係ないんで、 >古い形式のまま放置するってわけにはいかないんですかね。 どうでしょう・・・C の仕様書がないのでなんともいえません。でも、今より悪くなるわけは ないので、とりあえず放置するのも方法のような気もしてきました。