如何抑制有关匿名结构的Lint消息?

时间:2013-11-25 18:41:55

标签: c lint pc-lint

我在类似以下的代码上运行PC-Lint 8.00x:

typedef union
{
    struct
    {
        unsigned int blue  : 5;
        unsigned int green : 6;
        unsigned int red   : 5;
    };
    unsigned short color_value;
} Color_Type;

Color_Type my_color;
unsigned char blue;

blue = (unsigned char)my_color.blue;  /* Lint messages occur here */

PC-Lint返回以下错误消息:

Error 40: Undeclared identifier 'blue'

Error 63: Expected an lvalue

代码按预期编译并运行。 我假设这是因为匿名结构,这个假设是否正确?如果是这样,我如何针对这种特殊情况抑制这些消息?我目前在“options.lnt”文件中禁止消息,因为我们的本地编码实践禁止在代码中直接添加注释来抑制Lint消息。

1 个答案:

答案 0 :(得分:1)

正如我发布的那样,我回想起曾经有一段时间我设置了+fan标志并且认为应该涵盖这个案例。我决定再看一下PC Lint文档,并很快发现该标志只会禁止匿名联合的警告。

我也需要在我的“options.lnt”文件中设置+fas标志。

再次运行PC Lint后,我所关注的所有警告都被抑制了。事实上,警告是由于匿名结构。