我正在使用带有以下选项的 PC-Lint 8.00x:
+v -wlib(1) +fan +fas
当我运行类似于以下的代码时,我从 PC-Lint 收到许多错误消息:
typedef union
{
struct
{
unsigned int a : 4;
unsigned int b : 4;
unsigned int c : 4;
unsigned int d : 4;
} bits;
unsigned short value;
} My_Value;
int main (void)
{
My_Value test[] =
{
{
.bits.a = 2,
.bits.b = 3, //Errors 133 and 10
.bits.c = 2,
.bits.d = 3,
},
{
.bits.a = 1,
.bits.b = 1, //Errors 133 and 10
.bits.c = 1,
.bits.d = 0,
},
};
/* Do something meaningful. */
return 0;
}
报告的错误由 PC-Lint 定义如下:
错误 133:聚合“未知名称”的初始化程序太多
错误 10:需要 '}'
我尝试搜索 Gimpel 并进行了一些谷歌搜索,但我找不到任何有用的东西。代码按预期运行,一切都正确初始化。这是我的问题。
1. PC-Lint 8.00x 是否支持 C99 风格的结构成员初始化?
2. 如果是这样,我必须为 PC-Lint 设置哪些选项/标志才能全局抑制这些消息?
编辑
关于问题 2,我应该更详细。关于我使用指定初始化程序的问题,我想全局禁止这些消息,如上所示。我无法在所有情况下全局抑制它们,因为这些错误可以检测到代码中的真正错误。