Предупреждения при приведении к аннулированию **

Я пытаюсь привести структурный указатель к void** для функции, которая принимает 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]

В чем дело? Как это исправить?

извините, если это дублирование любого другого вопроса. Было много подобных вопросов, но я не мог найти тот, который соответствовал бы моей ситуации и который я понял.

1 ответ

Решение

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

Вы назначаете указатель на int...

Кроме того, Google говорит мне первый аргумент LLIteratorGetPayload должен быть LLIter, который оказывается typedef void*, я догадываюсь i является целым числом Вот причина первой ошибки.

Другие вопросы по тегам