Ok, c'est devenu tellement déroutant pour moi. Je ne sais tout simplement pas ce qui ne va pas avec cette mission:
void *pa; void *pb;
char *ptemp; char *ptemp2;
ptemp = (char *)pa;
ptemp2 = (char *)pb;
Quelqu'un peut-il me dire pourquoi j'obtiens cette erreur:
erreur: conversion non valide de "void *" en "char *"
En fait, il doit y avoir quelque chose de mal avec votre compilateur (ou vous n'avez pas raconté toute l'histoire). Il est parfaitement légal de lancer un void*
à char*
. De plus, la conversion est implicite en C (contrairement à C++), c'est-à-dire que ce qui suit doit également être compilé
char* pChar;
void* pVoid;
pChar = (char*)pVoid; //OK in both C and C++
pChar = pVoid; //OK in C, convertion is implicit
Je viens d'essayer votre code dans un module appelé temp.c. J'ai ajouté une fonction appelée f1.
void *pa; void *pb;
char *ptemp; char *ptemp2;
f1()
{
ptemp = (char *)pa;
ptemp2 = (char *)pb;
}
Sous Linux, j'ai entré gcc -c temp.c, et cela a été compilé sans erreurs ni avertissements.
Sur quel OS essayez-vous cela?