我在类似以下的代码上运行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消息。
答案 0 :(得分:1)
正如我发布的那样,我回想起曾经有一段时间我设置了+fan
标志并且认为应该涵盖这个案例。我决定再看一下PC Lint文档,并很快发现该标志只会禁止匿名联合的警告。
我也需要在我的“options.lnt”文件中设置+fas
标志。
再次运行PC Lint后,我所关注的所有警告都被抑制了。事实上,警告是由于匿名结构。