你可以让PC Lint忽略某些特殊的枚举,例如' myenum_min'和' myenum_max'

时间:2017-05-17 09:30:07

标签: c enums lint pc-lint

所以给出以下代码:

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;

这可能吗?

1 个答案:

答案 0 :(得分:1)

PC-Lint没有提供特殊命令来禁止有关枚举值的消息 BUT 它提供选项-estring(#, string)来禁止包含特定错误消息指定的字符串。这可用于抑制特定枚举值上的特定消息。

对于您的示例,这应该有效:

//lint -estring(788, myenum_max)

附录

PC-Lint版本9.00已引入选项-estring(#, string)