Dans ma librairie SavSegNum, la fonction pour imprimer est:
void SavSegNumFast::printSegNum(uint16_t posX, uint16_t posY, char charToPrint[])
{
_posY = posY;
size_t c = strlen(charToPrint);
uint8_t a;
for (uint8_t b = 0; b < c; b++)
{
_posX = posX + b * _l + (_inr * b);
switch (charToPrint[b])
{
case '0': { for (a = 0; a < 7; a++) draw0(a); break; }
case '1': { for (a = 0; a < 7; a++) draw1(a); break; }
case '2': { for (a = 0; a < 7; a++) draw2(a); break; }
case '3': { for (a = 0; a < 7; a++) draw3(a); break; }
case '4': { for (a = 0; a < 7; a++) draw4(a); break; }
case '5': { for (a = 0; a < 7; a++) draw5(a); break; }
case '6': { for (a = 0; a < 7; a++) draw6(a); break; }
case '7': { for (a = 0; a < 7; a++) draw7(a); break; }
case '8': { for (a = 0; a < 7; a++) draw8(a); break; }
case '9': { for (a = 0; a < 7; a++) draw9(a); break; }
case ' ': { for (a = 0; a < 7; a++) drawSP(a); break; }
case '-': { for (a = 0; a < 7; a++) drawMinus(a); break; }
case '+': { for (a = 0; a < 7; a++) drawPlus(a); break; }
case '=': { for (a = 0; a < 7; a++) drawEQ(a); break; }
case '/': { for (a = 0; a < 7; a++) drawDiv(a); break; }
case '.': { for (a = 0; a < 7; a++) drawDot(a); break; }
case ':': { for (a = 0; a < 7; a++) drawTP(a); break; }
case '*': { for (a = 0; a < 7; a++) drawMult(a); break; }
}
}
}
;
bMinOld Est un byte donc un uint8_t
Essayez avec %02[color=red][b]u[/b][/color] ou %02hhu
La spec dit
...If a conversion specification does not match one of the above forms, the behavior is undefined. If any argument is not the correct type for the corresponding conversion specification, the behavior is undefined.
Peut_il y avoir un problème avec charToPrint[]?
Je ne sais pas comment est dérini _posY. La spec dit un truc du genre
In addition, some identifiers are reserved for use by C ++ implementations and shall not be used otherwise; no diagnostic is required. (a) Each identifier that contains a double underscore __ or begins with an underscore followed by an uppercase letter is reserved to the implementation for any use. (b) Each identifier that begins with an underscore is reserved to the implementation for use as a name in the global namespace
donc si c’est une variable globale c’est un souci (mais si c’est une variable d’instance c’est OK).
Sinon c’est toujours bien de prévoir un default dans les switch() pour attraper les erreurs