ruby0.49編譯問題

ruby0.49編譯問題
編譯時,報了許多錯,先解決其中之一。
array.c: In function ‘ary_new2’:
ruby.h:119:38: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
 #define NEWOBJ(obj,type) type *obj = (type*)newobj(sizeof(type))
                                      ^
array.c:24:5: note: in expansion of macro ‘NEWOBJ’
     NEWOBJ(ary, struct RArray);
     ^
而函數定義如下:

VALUE
ary_new2(int len)
{
    NEWOBJ(ary, struct RArray);
    OBJSETUP(ary, C_Array, T_ARRAY);

    GC_LINK;
    GC_PRO(ary);
    ary->len = 0;
    ary->capa = len;
    ary->ptr = ALLOC_N(VALUE, len);
    GC_UNLINK;

    return (VALUE)ary;
}
其中宏的定義如下:
#define NEWOBJ(obj,type) type *obj = (type*)newobj(sizeof(type))
所用函數定義如下:
struct RBasic *
newobj(size)
    unsigned long size;
{
    struct RBasic *obj = Qnil;

    if (bytes_alloc + size > gc_threshold) {
    gc();
    }
    obj = (struct RBasic*)xmalloc(size);
    obj->next = object_list;
    object_list = obj;
    obj->flags = fl_current;
    obj->iv_tbl = Qnil;

    return obj;
}
我瞭解到newobj()返回的是struct RBasic*,但array.c中卻是類型struct RArray
    NEWOBJ(ary, struct RArray);
我想是類型不匹配的錯誤。
那,作者不可能寫出不能調試通過的程序。那他用的編譯器是哪個版本呀。如何修改呢?
我居然有種無從下手的感覺。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章