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);
我想是类型不匹配的错误。
那,作者不可能写出不能调试通过的程序。那他用的编译器是哪个版本呀。如何修改呢?
我居然有种无从下手的感觉。

 

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