0

我有一个函数,当使用 gcc 编译时工作正常,但是当我使用 g++ 编译它时,它给了我这个错误:

bon_io.cpp:In function 'lruc_item* lruc_pop_or_create_item(lruc*)': bon_io.cpp:4751: error: invalid conversion from 'void*' to 'lruc_item*'</p>

代码:

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++ 完成这项工作吗?

谢谢

4

1 回答 1

2

怎么样:

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

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

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

于 2012-08-07T14:28:29.027 回答