Pri*_*alj 6 c c++ gcc compiler-warnings implicit-conversion
在我们公司,我们有一个编译策略-Wconversion,产生一些转换警告.虽然我同意这个额外的检查可以防止错误,但是在速记操作符上看到警告很烦人,例如:
uint8_t byte;
byte += 8; // conversion to 'uint8_t' from 'int' may alter its value [-Wconversion]
Run Code Online (Sandbox Code Playgroud)
现在可以通过重写来解决这个问题byte = (uint8_t)(byte+8),从而降低代码的可读性.
有没有更好的方法来做到这一点?
考虑收到警告的原因,即整数常量的8类型为int。C 中的所有内容都必须提升为(有符号),这int是该语言众所周知的设计缺陷。
假设你有byte += 256;或byte += -1;或byte += function_that_returns_int();。所有这些都可能是严重的错误,因此启用该警告当然是有意义的。
除了将操作结果转换为预期类型 之外,确实没有其他解决方法uint8_t。这不一定是坏事,因为它创建了自记录代码,表示“是的,我实际上已经考虑过在此计算中使用哪些类型,因此不应出现溢出”。
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |