Eri*_*ren 6 c c++ enums warnings
清理使用硬编码整数文字而不是枚举的旧c/c ++代码,找到功能声明已被正确重构但不是正文的地方是很繁琐的.例如
enum important {
little = 1,
abit = 2,
much = 3
};
void blah(int e)
{
// magic stuff here
}
void boing(int e) { ... }
void guck(important e)
{
switch (e) {
case 3: // this would be a good place for a warning
blah(e); // and this
break;
default:
boing((int)e); // but this is OK (although imperfect and a warning would be acceptable)
break;
}
}
Run Code Online (Sandbox Code Playgroud)
注释/修改每个枚举类型或通过代码搜索它们也是相当多的工作,因为存在非常多的不同枚举,因此这不是优选的,但可以是可接受的解决方案.
我不需要它在我们的任何主编译器或其他工具(主要是gcc)或平台(大多数),手动运行几次就足够了,但我更喜欢不太深奥或昂贵的东西.
lint 将为您提供此警告(条件 641)
641 将 enum 转换为 int ——在需要计算的上下文中使用枚举类型,例如算术运算符的参数或与整型参数进行比较。如果您使用枚举的整数模型(+fie),此警告将被抑制,但这样做会丢失一些有价值的类型检查。中间策略是简单地关闭此警告。int 到 enum 的赋值仍然会被捕获。
Splint ( http://www.splint.org/download.html ) 是您可以使用的现代 lint
归档时间: |
|
查看次数: |
866 次 |
最近记录: |