Как преобразовать указатель void в указатель char в C
Хорошо, это стало для меня пустым. Я просто не знаю, что не так с этим заданием:
void *pa; void *pb;
char *ptemp; char *ptemp2;
ptemp = (char *)pa;
ptemp2 = (char *)pb;
Может ли кто-нибудь сказать мне, почему я получаю эту ошибку:
Ошибка: неверное преобразование из 'void * в' char *
Ответы
Ответ 1
Собственно, должно быть что-то не так с вашим компилятором (или вы не рассказали всю историю). Совершенно законно отбрасывать void*
до char*
. Кроме того, преобразование неявное в C (в отличие от С++), то есть следующее компиляция также
char* pChar;
void* pVoid;
pChar = (char*)pVoid; //OK in both C and C++
pChar = pVoid; //OK in C, convertion is implicit
Ответ 2
Я просто попробовал свой код в модуле temp.c. Я добавил функцию f1.
void *pa; void *pb;
char *ptemp; char *ptemp2;
f1()
{
ptemp = (char *)pa;
ptemp2 = (char *)pb;
}
В Linux я ввел gcc -c temp.c, и это скомпилировано без ошибок или предупреждений.
На какой ОС вы пытаетесь это сделать?