C'est à la ligne que j'ai soulignée en rouge et je ne comprend vraiment pas...
Pourtant je suis certain que la ligne est correcte c'est sa le pire !
Je commence à devenir fou
Non cette ligne est fausse mais l'erreur vient d'ailleurs.
1 2 3 4 5
| struct Coureur {
int id;
char nom[25];
int temps;
}c; |
Veut dire défini une struct et crée une instance appelée c !!
Pour faire ce que vous voulez, c'est à dire que la struct s'appelle bien c, alors il faut utiliser le mot clé typedef, comme ceci :
1 2 3 4 5
| typedef struct Coureur {
int id;
char nom[25];
int temps;
}c; |
On ne peut utiliser sizeof que sur un type et comme ici c était une variable, il y avait une erreur, plus ou moins lisible (pas trivial de donner des bons messages d'erreurs lors du parse).
EDIT :
Au passage j'ai oublié de dire mais pour votre autre erreur, c'est bien à cause du sizeof !!
*((c*)ptr_mem_partagee + nb_coureur ) = tab_candidats[nb_coureur];
et non pas
*((c*)ptr_mem_partagee + (nb_coureur*sizeof(c)) ) = tab_candidats[nb_coureur];
Si p est de type T* alors p + i revient à prendre l'adresse de p et à la décaler de i fois sizeof(T).
Partager