Demande de précision sur les structures : utilisation de memcmp
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:
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:
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