好的,这对我来说太麻烦了。我只是不知道这个任务有什么问题:
void *pa; void *pb;
char *ptemp; char *ptemp2;
ptemp = (char *)pa;
ptemp2 = (char *)pb;
任何人都可以告诉我为什么我会收到此错误:
错误:无效转换为'void *'到'char *'
答案 0 :(得分:24)
实际上,编译器一定有问题(或者你还没有讲完整的故事)。将void*
转换为char*
是完全合法的。此外,C中的转换是 隐式 (与C ++不同),也就是说,以下内容也应该编译
char* pChar;
void* pVoid;
pChar = (char*)pVoid; //OK in both C and C++
pChar = pVoid; //OK in C, convertion is implicit
答案 1 :(得分:3)
我刚刚在名为temp.c的模块中尝试了您的代码。我添加了一个名为f1的函数。
void *pa; void *pb;
char *ptemp; char *ptemp2;
f1()
{
ptemp = (char *)pa;
ptemp2 = (char *)pb;
}
在Linux上我输入了gcc -c temp.c,编译没有错误或警告。
你在尝试使用哪个操作系统?