J'ai une fonction uint8_t EE_Write(uint8_t addr, uint8_t len, uint8_t * buf)
qui prend un pointeur à certaines données qu'il va écrire en mémoire, et un uint16_t myword
que je veux lui donner. LeTypecasting un entier à un pointeur de caractère dans C
EE_Write(0,sizeof(myword),&myword);
de base me donne l'avertissement du compilateur "Indirection à différents types ('unsigned int * const' au lieu de 'unsigned char * const')" Même quand je Typecast le mot (int) à un octet (char), J'ai reçu exactement le même avertissement (et aucun montant de regroupement avec des parenthèses aidé).
EE_Write(0,sizeof(myword),&(uint8_t)myword);
Avertissements disparaissent avec un syndicat, mais il est stupide d'avoir à l'écrire à une autre variable juste pour le compilateur heureux.
union catbyte {
uint16_t w;
uint8_t b[2];
};
union catbyte mybytes;
mybytes.w = myword;
EE_Write(0,sizeof(myword),mybytes.b);
Ah, devrait regarder 'memcpy', etc. pour avoir un indice. –