你能让 PC Lint 忽略某些特殊的枚举,比如 'myenum_min' 和 'myenum_max'
Can you get PC Lint to ignore certain special enums like 'myenum_min' and 'myenum_max'
所以给出以下代码:
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 语句的规则,但这意味着:
- 对于缺失的潜在有效枚举,将忽略此规则。
- 我必须在所有添加这种 switch 语句的地方添加这一行。
或者我可以使用“// -e788”完全删除规则,但是:
- 对于所有类型的枚举的有效缺失枚举,此规则将再次被忽略 - 更糟糕的是。
我真正想要的,但不确定如何去做(或者如果它存在的话)是忽略给定枚举的规则,例如:
typedef enum
{
myenum_a = 1,
myenum_b = 2,
myenum_c = 3,
myenum_max = 4 // !eXXX - ignore this enum
}myenum_t;
这可能吗?
PC-Lint 不提供特殊命令来抑制有关枚举 values 的消息,BUT 它提供选项 -estring(#, string)
以抑制包含指定字符串的特定错误消息。这可用于抑制特定枚举值的特定消息。
对于您的示例,这应该有效:
//lint -estring(788, myenum_max)
附录
选项 -estring(#, string)
已在 PC-Lint 版本 9.00 中引入。
所以给出以下代码:
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 语句的规则,但这意味着:
- 对于缺失的潜在有效枚举,将忽略此规则。
- 我必须在所有添加这种 switch 语句的地方添加这一行。
或者我可以使用“// -e788”完全删除规则,但是:
- 对于所有类型的枚举的有效缺失枚举,此规则将再次被忽略 - 更糟糕的是。
我真正想要的,但不确定如何去做(或者如果它存在的话)是忽略给定枚举的规则,例如:
typedef enum
{
myenum_a = 1,
myenum_b = 2,
myenum_c = 3,
myenum_max = 4 // !eXXX - ignore this enum
}myenum_t;
这可能吗?
PC-Lint 不提供特殊命令来抑制有关枚举 values 的消息,BUT 它提供选项 -estring(#, string)
以抑制包含指定字符串的特定错误消息。这可用于抑制特定枚举值的特定消息。
对于您的示例,这应该有效:
//lint -estring(788, myenum_max)
附录
选项 -estring(#, string)
已在 PC-Lint 版本 9.00 中引入。