ファイル全域とファイル内部における変数、引数、関数の矛盾した使用を検査します。概して lint が古いスタイルの関数に対して検査していたのと同様に、プロトタイプの使用、宣言、引数を検査します。プログラムが関数プロトタイプを使用していない場合、lint は関数の呼び出しごとにコンパイラより厳しく引数の数と型を検査します。lint は、[fs]printf() と [fs]scanf() の制御文字列の変換指示子と引数の不一致も識別します。次に例を示します。
lint はファイル内で呼び出した関数に値を返すことなくそのまま終了してしまうような非 void 型関数にフラグを立てます。以前、プログラマは fun () {} のように戻り型を省略することによって「関数は値を返さない」ということを示しました。しかし、fun() が戻り型 int を持っているとみなすコンパイラには何の意味もありません。この問題を解決するには、戻り型 void の関数として宣言します。
lint はファイル全域で非 void 型関数が値を返さず、しかも式の中でその値が使用されている場合や、これとは反対に関数が返す値が後の呼び出しで時々または常に無視されるという場合を検出します。値が常に無視されるのは、関数定義が不十分だと考えられます。時々無視されるのは、間違ったプログラミングスタイルをとっていることが考えられます (エラー状態のテストが行われていないなど)。strcat()、strcpy() および sprintf() のような文字列関数や、printf() と putchar() のような出力関数の戻り値を検査する必要がない場合、その問題となる呼び出しは void 型にキャストしてください。
lint は次の場合に変数や関数を識別します。
宣言されたが定義または使用されていない。
使用されたが定義されていない。
定義されたが使用されていない。
したがって、一緒にロードされるファイルのすべてにではなくその一部に lint が適用されると、lint は次の場合に警告を出します。
a. そのファイルで宣言された関数と変数が他の場所で定義または使用された。
b. そのファイルで使用された関数と変数が他の場所で定義されていた。
c. そのファイルで定義された関数と変数が他の場所で使用された。
a の場合を抑制するには -x オプションを、b と c の場合を抑制するには -u オプションを使用してください。