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 :
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 ???
=> 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 ?


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 ?
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 ???
=> c'est bien ça ?

merci d'avance