1

我正在尝试将结构指针强制转换void**为 a 的函数,该函数采用void**;

typedef struct {
  uint64_t   key;    // the key in the key/value pair
  void      *value;  // the value in the key/value pair
} HTKeyValue, *HTKeyValuePtr;

HTKeyValuePtr payload = (HTKeyValuePtr)malloc(sizeof(HTKeyValue));
int success = (HTKeyValuePtr) LLIteratorGetPayload(i, (void**) &payload);

给我警告:

hashtable.c:161:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
hashtable.c:161:19: warning: initialization makes integer from pointer without a cast [enabled by default]

这是怎么回事?我该如何解决?

ps对不起,如果这是任何其他问题的重复。有很多类似的问题,但我找不到适合我的情况并且我理解的问题。

4

1 回答 1

4

int success = (HTKeyValuePtr) LLIteratorGetPayload(i, (void**) &payload);

您正在将一个指针分配给一个 int ...

此外,谷歌告诉我第一个参数LLIteratorGetPayload应该是 a LLIter,结果是 a typedef void*。我猜i是一个整数。这就是第一个错误的原因。

于 2012-07-05T19:19:13.367 回答