わかりました、これは私をとても混乱させています。この割り当ての何が悪いのか分かりません:
void *pa; void *pb;
char *ptemp; char *ptemp2;
ptemp = (char *)pa;
ptemp2 = (char *)pb;
なぜ私がこのエラーを受け取っているのか誰にも教えてもらえますか?
エラー:「void *」から「char *」への無効な変換
実際には、コンパイラーに問題があるはずです(または、完全な話をしていません)。 void*
をchar*
にキャストすることは完全に合法です。さらに、変換はimplicit Cで(C++とは異なり)、つまり、次のコードもコンパイルする必要があります
char* pChar;
void* pVoid;
pChar = (char*)pVoid; //OK in both C and C++
pChar = pVoid; //OK in C, convertion is implicit
Temp.cというモジュールでコードを試しました。 f1という関数を追加しました。
void *pa; void *pb;
char *ptemp; char *ptemp2;
f1()
{
ptemp = (char *)pa;
ptemp2 = (char *)pb;
}
Linuxではgcc -c temp.cと入力しましたが、これはエラーや警告なしでコンパイルされました。
どのOSでこれを試していますか?