开源改变世界

校验和算法返回布尔值而不是字节 #355

推推 grbl 2年前 (2023-01-22) 133次浏览

关闭
ChristianRinn 打开了这个问题 2018 年 1 月 18 日 · 2 条评论
关闭

校验和算法返回布尔值而不是字节#355

ChristianRinn 打开了这个问题 2018 年 1 月 18 日 · 2 条评论

注释

校验和算法返回布尔值而不是字节 #355
克里斯蒂安林恩 评论了 2018 年 1 月 18 日  

布尔运算符(“||”)的典型用法,其中按位运算符是指(“|”)。幸运的是有编译器警告。

grbl/eeprom.c:133:26: warning: '<<' in boolean context, did you mean '<' ? [-Wint-in-bool-context]
     checksum = (checksum << 1) || (checksum >> 7);
                ~~~~~~~~~~^~~~~
grbl/eeprom.c: In function 'memcpy_from_eeprom_with_checksum':
grbl/eeprom.c:144:26: warning: '<<' in boolean context, did you mean '<' ? [-Wint-in-bool-context]
     checksum = (checksum << 1) || (checksum >> 7);
                ~~~~~~~~~~^~~~~

受影响的是 memcpy_to_eeprom_with_checksum() 和 memcpy_from_eeprom_with_checksum() 函数: https ://github.com/gnea/grbl/blob/master/grbl/eeprom.c#L130

PS:
要修复此错误,我们必须再次擦除每个 EEPROM,否则校验和将“错误”。

校验和算法返回布尔值而不是字节 #355
贡献者

是的。几年前我发现了这一点,并得出了相同的结论,即它会擦除每个 EEPROM,因为校验和是错误的。决定在下一个主要版本之前不理会它。

校验和算法返回布尔值而不是字节 #355

也许源代码中指向此问题的注释会帮助其他人(如我)定期“重新发现”此错误?

喜欢 (0)