¿Cómo convertir puntero vacío en puntero char en C

Ok, esto se ha vuelto tan confuso para mí. Simplemente no sé qué está mal con esta tarea:

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

¿Alguien puede decirme por qué estoy recibiendo este error:

error: conversión no válida de ‘void *’ a ‘char *’

En realidad, debe haber algún problema con su comstackdor (o no ha contado la historia completa). Es perfectamente legal lanzar un void* a char* . Además, la conversión está implícita en C (a diferencia de C ++), es decir, lo siguiente debería comstackr también

  char* pChar; void* pVoid; pChar = (char*)pVoid; //OK in both C and C++ pChar = pVoid; //OK in C, convertion is implicit 

Acabo de probar su código en un módulo llamado temp.c. Agregué una función llamada f1.

 void *pa; void *pb; char *ptemp; char *ptemp2; f1() { ptemp = (char *)pa; ptemp2 = (char *)pb; } 

En Linux ingresé gcc -c temp.c, y esto se compiló sin errores ni advertencias.

¿En qué sistema operativo estás intentando esto?