LINT を使用して、自動生成された C ソースファイルをチェックしています。これらのソースファイルでは、これらのマクロが使用されています (簡略化):
#define MACRO_CHECK(a, b, c) \
((a==b) ? b : (SET_VAR, c))
#define SET_VAR \
global_var = 0 \
コードでは、これらのマクロは次のように使用されます。
if ( (x==0) && (MACRO(var1,var2,var3)==0) )
{
//...
}
私の LINT 分析では、次のメッセージが表示されます。
LINT Note 9007: side effects on right hand of logical operator
私のマクロはグローバル変数に値を書き込んでいるので、LINT メッセージ自体は正当化されます。ただし、アーキテクチャ上の理由により、このメッセージを無視できることはわかっています。このため、メモ 9007 のチェックからマクロを除外したいと考えています。自動コード生成を使用しているため、LINT を挿入するのに苦労しています。コメント (Lint メッセージを無効にするため) をソース ファイルの適切な場所に挿入します。よりクリーンなアプローチは、LINT-Ruleset のチェックからマクロを除外することです。そこで、次の行を LINT ルールセットに追加しようとしました。
-emacro((9007),MACRO_CHECK)
ただし、マクロ自体のコードはチェックから除外されますが、論理演算子は含まれていない&&
ため、注 9007 が表示されるため、これはうまくいきません。エラーを無効にする方法はありますか?私のマクロに何らかの形で関連するすべてのメッセージに対して?