山本です。

そろそろ関数定義の ANSI 化しませんか?

static VALUE rb_digest_base_alloc _((VALUE));
static VALUE
rb_digest_base_alloc(klass)
    VALUE klass;
{

というのは、DRY 原則に反すると思います。(それだけミスも入りやすい)

GO サインがいただければ少しずつ変換していきたいのですけど。

一通りやってみて問題になったのは

  1. eval.c で const VALUE * を VALUE * に代入している部分で警告

  2. 関数ポインタを保存するときに void (*hoge)() のように ANYARGS の
     扱いになっている部分。代入している関数の引数の数や型が違うことが
     よくある。(これはとりあえず後回しにしたらよいと思う)

  3. VisualC++ だと bignam.c などで int を char に変換するときに「ベースの
     型が違う」といった警告が出る。

というぐらいで、エラーになったり落ちたりはしていません。