Bonjour à toutes et à tous,
Je travaille sur un programme qui fonctionne déjà correctement, je suis en charge d'éliminer toutes les MISRA rules et autres warnings sans "altérer" l'exécutable...
Je suis bloqué sur cette ligne de code notée LC :
i_RingBuf = (uint8)((pCurRowStart-pRingBufStart)/ pRoiDescriptor->usModuloWidth);
Elle me renvoie les deux lignes d'erreur suivantes :
1 2
| error 946: (Note -- Relational or subtract operator applied to pointers [MISRA 2004 Rule 17.2, required], [MISRA 2004 Rule 17.3, required])
error 947: (Note -- Subtract operator applied to pointers [MISRA 2004 Rule 17.2, required], [MISRA 2004 Rule 17.3, required]) |
Les variables intervenant dans LC sont définies comme suit :
1 2 3 4 5 6 7 8 9 10 11
| /* En paramètres d'entrée de la fonction */
const t_PixelData *const pRingBufStart, t_PixelData * pCurRowStart, const t_RoiDescriptor *const pRoiDescriptor
/* [...] */
/* Au début de la fonction */
uint8 i_RingBuf;
/*La ligne "incriminée" LC vient juste après cette déclaration*/
i_RingBuf = (uint8)((pCurRowStart-pRingBufStart)/ pRoiDescriptor->usModuloWidth); |
Comme vous le voyez, de nouveaux types ont été définis ailleurs dans le logiciel : t_PixelData et t_RoiDescriptor, entre autres...
Alors voilà, je suis bloqué, j'ai tenté divers essais mais le compilateur renvoie des erreurs, sans parler de MISRA.
Par exemple en définissant un pointeur "différence" :
1 2 3 4 5
| t_PixelData *subtraction_of_pointers;
subtraction_of_pointers = (uint8)(pCurRowStart-pRingBufStart);
i_RingBuf = (uint8)(subtraction_of_pointers/ pRoiDescriptor->usModuloWidth); |
Décomposer le calcul en deux étapes intermédiaires ne donne pas plus de succès :
1 2 3 4 5 6 7 8
| uint8 i_RingBuf1;
uint8 i_RingBuf2;
uint8 i_RingBuf;
i_RingBuf1 = ((uint8)(pCurRowStart))/ ((uint8)pRoiDescriptor->usModuloWidth);
i_RingBuf2 = ((uint8)(pRingBufStart))/ ((uint8)pRoiDescriptor->usModuloWidth);
i_RingBuf = i_RingBuf1 - i_RingBuf2; |
Auriez-vous des idées pour me débloquer s'il vous plaît ?
Je vous remercie de m'avoir lu.
Bonne journée.
Partager