Bonjour,
J'ai lu dans la FAQ qu'il ne faut pas utiliser memcmp pour comparer deux strutures :
J'ai cru comprendre que c'est parce que les espaces mémoires non utilisés entre deux éléments de la structure peuvent avoir n'importe quelle valeur : c'est bien ça ?
Donc si j'ai la structure suivante :
=> Un memcmp() peut potentiellement généré une erreur car entre la variable a et b, il y a un espace vide de 1 octet qui peut avoir n'importe quelle valeur : c'est bien ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct { u_int8_t a; u_int16_t b; u_int16_t c; u_int8_t d; u_int8_t e; } myStruct; // size = 8 octets ???
Par contre avec la structure suivante, ça devrait fonctionner quelque soit le compilateur/CPU vu qu'il n'y a plus d'espace libre entre les champs ?
=> c'est bien ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef struct { u_int8_t a; u_int8_t d; u_int16_t b; u_int16_t c; u_int8_t e; } myStruct; // size = 7 octets ???
merci d'avance
Partager