所以给定以下代码:
typedef enum
{
myenum_a = 1,
myenum_b = 2,
myenum_c = 3,
myenum_max = 4
}myenum_t;
然后后来
myenum_t test;
switch (test)
{
case myenum_a:
{
// do stuff
}
case myenum_b:
{
// do stuff
}
case myenum_c:
default:
{
// do stuff
}
}
当我在此上运行lint时,出现错误788:"'myenum_max'未在默认开关中使用"。
我知道我可以使用 "//!e788" 来忽略此特定 switch 语句的此规则,但这意味着:
- 对于缺少的潜在有效枚举,将忽略此规则。
- 我必须在添加这种开关语句的任何地方添加此行。
或者我可以使用"//-e788"完全删除规则,但是:
- 同样,对于所有类型的枚举的有效缺失枚举,将忽略此规则 - 因此更糟。
我真正想要的,但不确定如何做(或者它是否存在(是忽略给定枚举的规则,如下所示:
typedef enum
{
myenum_a = 1,
myenum_b = 2,
myenum_c = 3,
myenum_max = 4 // !eXXX - ignore this enum
}myenum_t;
这可能吗?
PC-Lint 不提供特殊命令来禁止显示有关枚举值的消息,但它提供了-estring(#, string)
选项来禁止显示包含指定字符串的特定错误消息。这可用于禁止显示特定枚举值上的特定消息。
对于您的示例,这应该有效:
//lint -estring(788, myenum_max)
补遗
选项-estring(#, string)
已在 PC-Lint 版本 9.00 中引入。