次のオプションで 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: 集合体 'unknown-name' の初期化子が多すぎます
エラー 10: '}' が必要です
Gimpel を検索してみたり、Google で検索したりしましたが、役に立つものは見つかりませんでした。コードは意図したとおりに機能し、すべてが適切に初期化されます。これが私の質問です。
1. PC-Lint 8.00x は構造体メンバーの C99 スタイルの初期化をサポートしていますか?
2. その場合、これらのメッセージをグローバルに抑制するには、PC-Lint にどのオプション/フラグを設定する必要がありますか?
EDIT
質問 2 に関してもっと詳しく説明する必要がありました。上記の指定イニシャライザの使用に関して、これらのメッセージをグローバルに抑制したいと思います。これらのエラーはコード内の真のエラーを検出できるため、すべての状況でそれらをグローバルに抑制することはできません。