Je travaille sur le projet de micrologiciel C. J'ai une union qui est définie commeAide à la création d'un pointeur sur un syndicat
typedef union {
unsigned long value;
unsigned char bytes[4];
} LONGVALUE;
J'ai aussi une fonction qui a ce prototype,
char sendHexToASCII_UART(char *msg, int cnt);
et une variable de type LongValue défini comme,
LONGVALUE countAddr;
LA PROBLÈME: Je remplis les octets individuels de la variable union avec des valeurs d'un tableau (tempBuff1), je veux ensuite passer l'adresse du premier élément de l'union à une fonction qui va imprimer à l'UART. Sur ma fonction appelez sendHexToASCII_UART((int *)countAddr.bytes[0], 4);
, j'obtiens un avertissement de compilateur disant "cast à pointeur d'entier de taille différente". Quelqu'un peut-il expliquer pourquoi je reçois ceci et comment je peux le faire disparaître? REMARQUE: La modification de la conversion (int *) en (char *) entraîne le même avertissement.
countAddr.bytes[0] = tempBuff1[COUNT_ADDR - PWRD_ADDRESS];
countAddr.bytes[1] = tempBuff1[COUNT_ADDR - PWRD_ADDRESS + 1];
countAddr.bytes[2] = tempBuff1[COUNT_ADDR - PWRD_ADDRESS + 2];
countAddr.bytes[3] = tempBuff1[COUNT_ADDR - PWRD_ADDRESS + 3];
sendHexToASCII_UART((int *)countAddr.bytes[0], 4);
Puis-je obtenir: 'avertissement: les cibles des pointeurs dans l'argumentation passant 1 « sendHexToASCII_UART » diffèrent en signedness' – PICyourBrain
Mise à jour réponse maintenant ... Je –
changé à (unsigned char *) et je reçois toujours le même avertissement "different in sidnedness" – PICyourBrain