Я боролся с довольно странной ситуацией.ADT, указатели void и int - проблемы с несколькими связанными предупреждениями в C
Мне пришлось реализовать некоторые ADT в C и использовать их. при использовании ADT у меня есть typedef'ed void *.
Как я пытался работать со значениями int, пытаясь вернуть int, где ожидается это void *, я получил предупреждение «return делает указатель из целого без приведения». поэтому я подумал, что просто бросил его.
, но затем я встретил this thread, который велел мне не делать такую вещь, бросая int в пустоту *. Я должен был попробовать. поэтому я получил это предупреждение - «приведение к указателю из целого разного размера».
В любом случае, я понял - возможно, я мог бы просто напрямую возвращать int, так как это только в файле использования ADT. поэтому я изменил тип возврата - и я получил те же предупреждения, в других местах, по почти тем же причинам, из того, что я могу сказать.
Пожалуйста, помогите мне избавиться от этих предупреждений. что я должен делать в этой ситуации? Я просмотрел некоторые темы по этой проблеме (например, связанную с ней), но в любом из них нет реального решения моей проблемы.
Моя проблематичной функция: (MapKeyElement является typedef'ed недействительным *)
static MapKeyElement copyKeyID(MapKeyElement n) {
if (!n) {
return 0;
}
int *copy = malloc(sizeof(int));
if (!copy) {
return NULL;
}
*copy = *(int *)&n;
return (void *)*copy;
}
Спасибо за ваше время!
Спасибо за ваш ответ. Я добавил свою проблемную функцию к основному сообщению, она содержит эту аналогичную идею. – Zephyer