使用g ++而不是gcc编译时的编译错误

时间:2012-08-07 14:26:07

标签: gcc g++

我有一个函数,当使用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 ++来解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:2)

怎么样:

cache1->free_items = (lruc_item *) item->next;
  

但是为什么它使用gcc完美编译并给出   我用g ++错误

因为在C ++中,您无法自动从void *转换为另一种指针类型。