你能让 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 语句的规则,但这意味着:

或者我可以使用“// -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 中引入。