Bonjour,
j'espere que le titre reflète correctement le sujet dont il sera propos ici ( sinon libre à ceux qui le peuvent de le corriger).
Je passe tout de suite au probleme qui m'amène :
J'ai un pointeur que j'ai déclaré ainsi dans ma fonction main() :
CONNEX *listeConnex=NULL;
un peu plus tard, j'ai créé un thread dans lequel je passe l'adresse de listeConnex.
pthread_create(&thr_control, NULL, &controleDesThreads, &listeConnex);
Ensuite, dans une autre fonction (appelée par le thread créé),
int LSupprimerConnex(CONNEX *objet, CONNEX *liste)
{
CONNEX *listeC=NULL;
listeC = liste; //(qui contient l'adresse du pointeur listeConnex de main())
fprintf(stdout, "listeC : 0x%x\n", *listeC); // affiche adresse pointée par listeConnex (main())
fprintf(stdout, "&listeC : 0x%x\n", listeC); // affiche adresse de listeConnex (main)
// jusque là mon programme affiche les adresses et elles correspondent avec
// ce qui est prévu.
// La partie qui pose probleme :
*listeC = (*objet).pNext; // de type CONNEX*
// error: incompatible types when assigning to type 'CONNEX' from type 'struct CONNEX *'
}
j'ai ensuite tenté:
*listeC = (CONNEX) (*objet).pNext;
// error : conversion to non-scalar type requested
A ce stade il semble important que j'indique aussi :
typedef struct SConnex CONNEX;
struct SConnex {
data *donnes;
CONNEX *pNext;
CONNEX *pBefore;
};
Je ne parviens pas à voir d'où vient le problème.
J'ai fait un sizeof de listeC et de (*objet).pNext, et ils ont la même taille,
et sont de même type ...
Je bloque !
Merci d'avance à celles et ceux qui pourront m'aider un peu !