我有一个函数,当使用gcc编译时工作正常,但是当我用g ++编译它时,它给了我这个错误:
bon_io.cpp:在函数'lruc_item * lruc_pop_or_create_item(lruc *)'中: bon_io.cpp:4751:错误:无效转换为'void *'到'lruc_item *'
代码:
typedef struct {
void *value;
void *key;
uint32_t value_length;
uint32_t key_length;
uint64_t access_count;
void *next;
} lruc_item;
lruc_item* lruc_pop_or_create_item(lruc *cache1)
{
lruc_item *item = NULL;
if(cache1->free_items) {
item = cache1->free_items;
cache1->free_items = item->next; [LINE 4751]
} else {
item = (lruc_item *) calloc(sizeof(lruc_item), 1);
}
return item;
}
我正在尝试将此函数与c ++代码一起使用,这就是为什么需要用g ++编译它,如果我使用gcc编译它而不是用g ++编译它会正常工作。
有人可以建议我使用g ++来解决这个问题吗?
由于
答案 0 :(得分:2)
怎么样:
cache1->free_items = (lruc_item *) item->next;
但是为什么它使用gcc完美编译并给出 我用g ++错误
因为在C ++中,您无法自动从void *
转换为另一种指针类型。