Подтвердить что ты не робот

Как преобразовать указатель void в указатель char в C

Хорошо, это стало для меня пустым. Я просто не знаю, что не так с этим заданием:

void *pa; void *pb;
char *ptemp; char *ptemp2; 

ptemp = (char *)pa;
ptemp2 = (char *)pb;

Может ли кто-нибудь сказать мне, почему я получаю эту ошибку:

Ошибка: неверное преобразование из 'void * в' char *

4b9b3361

Ответ 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, и это скомпилировано без ошибок или предупреждений.

На какой ОС вы пытаетесь это сделать?