Я пытаюсь преобразовать старый 32-битный код в 64-битный. Одно из самых частых предупреждений, которое я получаю:
предупреждение: приведение указателя к целому числу другого размера
это происходит, когда функция вызывает pthread_create , которая принимает void * для передачи данных в новый поток. Вызывающий поток помещает в этот void * перечисление (отсюда и несоответствие размера в 64-битном) Вот код:
typedef enum {
zero,
one,
two
}numbers_e;
some_function(...)
{
numbers_e mydata=zero;
...
pthread_create(..., (void *)mydata);
...
}
Мне удалось преодолеть предупреждение с помощью этого:
pthread_create(..., (void *)0 + my_data);
это решение очень уродливо (и я размышляю, лучше ли оставить предупреждение как есть с большим замечанием рядом с кодом, использующим его). Есть ли другое решение?