Oracle Solaris Studio 12.2: C ユーザーガイド

4.6.2 lint ライブラリ

lint ライブラリを使用して、呼び出したライブラリ関数とユーザープログラムとの互換性を検査することができます。関数戻り型の宣言、関数が期待する引数の数と型などを検査します。標準 lint ライブラリは、C 言語処理系で供給されるライブラリに対応し、一般にはシステムの標準位置であるディレクトリに格納されています。慣例では、lint ライブラリは llib-lx.ln という形の名前を持ちます。

lint 標準 C ライブラリの llib-lc.ln は、デフォルトで lint コマンド行に追加されます。ライブラリ関数との互換性の検査は、-n オプションを指定して呼び出すことにより抑制することができます。そのほかの lint ライブラリは、-l に対して引数として指定することでアクセスされます。次に例を示します。


% lint -lx file1.c file2.c

この例では、lint ライブラリ llib-lx.ln との互換性について、file1.cfile2.c の関数と変数の使用方法を調べるよう lint に指示します。定義だけからなるライブラリファイルは、厳密に通常のソースファイルと .ln ファイルとして処理されます。ただしライブラリファイルで関数と変数が矛盾したまま使用されるか、またはライブラリファイルで定義されてもソースファイルでは使用されない関数と変数に対しては警告を出しません。

自分の lint ライブラリを作成するには、C ソースファイルの先頭に NOTE(LINTLIBRARY) 指令を挿入し、次いで -o オプションとそのライブラリ名を与える -l オプションとともにそのファイルに対して lint を実行してください。


% lint -ox file1.c file2.c

前述のコマンド行により、NOTE(LINTLIBRARY) が先頭に付いたソースファイル中の定義だけがファイル llib-lx.ln に書き込まれます。lint -occ -o の類似に注意してください。ライブラリは、同様に関数プロトタイプ宣言のファイルから作成されます。ただし、NOTE(LINTLIBRARY)NOTE(PROTOLIB(n)) の両方が宣言ファイルの先頭に挿入されている場合は別です。n が 1 の場合、プロトタイプ宣言は古いスタイルの定義と同様にライブラリ .ln ファイルに書き込まれます。n がデフォルトの 0 の場合、処理はキャンセルされます。-y を指定して lint を呼び出しても、lint ライブラリを作成することができます。次のようなコマンド行があるとします。


% lint -y -ox file1.c file2.c

前述のコマンド行で指定された各ソースファイルは NOTE(LINTLIBRARY) で開始したかのように扱われ、その定義だけが llib-lx.ln に書き込まれます。

デフォルトでは、lint は標準位置で lint ライブラリを検索します。標準位置以外のディレクトリで lint ライブラリを検索するように lint に指示するには、-L オプションを使用してディレクトリのパスを指定します。


% lint -Ldir -lx file1.c file2.c

拡張モードでは、lint は基本モードで生成される .ln ファイルより多くの情報が格納された .ln ファイルを生成します。拡張モードの lint は、基本モードまたは拡張モードのどちらの lint で生成された .ln ファイルでもすべて読み取って理解することができます。基本モードの lint は、基本モードの lint を用いて生成された .ln ファイルだけを読み取って理解することができます。

デフォルトでは、lint/usr/lib ディレクトリのライブラリを使用します。これらのライブラリは基本 lint 形式です。makefile を一度実行して新しい形式の拡張 lint ライブラリを作成すれば、拡張 lint をより効率的に利用することができます。makefile を実行して新しいライブラリを作成するには、次のコマンドを入力してください。


% cd <install-directory>/prod/src/lintlib; make

ここで、<install-directory> はインストールディレクトリです。makefile の実行後、lint/usr/lib ディレクトリ内のライブラリの代わりに拡張モードの新ライブラリを使うようになります。

指定されたディレクトリは標準位置の前に検索されます。