#define colsPerModule (uint8_t)32UL
#define boardArrayWidth (uint8_t)2UL
#define boardColWidth (colsPerModule*boardArrayWidth)
uint16_t padMsg(char *p)
{
uint16_t i, x=strlen(p), c=boardColWidth/(*(DMD.fontPtr+3));
if(boardColWidth%(*(DMD.fontPtr+3)))
c+=1;
for(i=0; i<c; i++,x++){
*(p+x)=' ';
}//user.msgRam
*(p+x)='\0';
return(strlen(p));
}
Pls可能会有人看看这段代码片段并找出可能出错的地方。变量*(DMD.fontPtr+3)
的值为9,存储在它指向的位置。因此,c=boardColWidth/(*(DMD.fontPtr+3))
应该返回值7,因为常量boardColWidth
等于64(32 * 2)。但是表达式boardColWidth/(*(DMD.fontPtr+3))
似乎更确切地返回值2.如果我手动将值7赋值给变量c,那么它运行良好。