Reputation: 881
Ok this has been become sooo confusing to me. I just don't know what is wrong with this assignment:
void *pa; void *pb;
char *ptemp; char *ptemp2;
ptemp = (char *)pa;
ptemp2 = (char *)pb;
Can anyone tell me why I'm getting this error:
error: invalid conversion from ‘void*’ to ‘char*’
Upvotes: 20
Views: 108807
Reputation: 11
I faced the same problem as you, and the way I got it to work was by encompassing the whole thing in parentheses.
Example:
pChar = ((char*)pVoid);
Upvotes: 1
Reputation: 10695
I just tried your code in a module called temp.c. I added a function called f1.
void *pa; void *pb;
char *ptemp; char *ptemp2;
f1()
{
ptemp = (char *)pa;
ptemp2 = (char *)pb;
}
On Linux I entered gcc -c temp.c, and this compiled with no errors or warnings.
On which OS are you trying this?
Upvotes: 3
Reputation: 133024
Actually, there must be something wrong with your compiler(or you haven't told the full story). It is perfectly legal to cast a void*
to char*
. Furthermore, the conversion is implicit in C (unlike C++), that is, the following should compile as well
char* pChar;
void* pVoid;
pChar = (char*)pVoid; //OK in both C and C++
pChar = pVoid; //OK in C, convertion is implicit
Upvotes: 32