Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

4.6.2 lint ライブラリ

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

lint 標準 C ライブラリ、llib-lc.ln は、lint コマンド行の末尾にデフォルトで追加されます。それとの互換性の検査は、-n オプションを呼び出すことで抑制すできます。そのほかの lint ライブラリは、-l に対して引数として指定することでアクセスされます。この例では、lint ライブラリ llib-lx.ln との互換性について、file1.cfile2.c 内の関数と変数の使用法を調べるよう lint に指示します。

% lint -lx file1.c file2.c

定義だけからなるライブラリファイルは、厳密に通常のソースファイルおよび通常の .ln ファイルとして処理されます。ただし、ライブラリファイル内で関数と変数が矛盾した状態で使用されるか、またはライブラリファイルで定義されているけれどもソースファイルで使用されない関数と変数に対しては警告を出しません。

自分の lint ライブラリを作成するには、C ソースファイルの先頭に NOTE(LINTLIBRARY) 指令を挿入し、ついで -o オプションとそのライブラリ名を与える -l オプションとともにそのファイルに対して lint を実行してください。次の例では、NOTE(LINTLIBRARY) が先頭にあるソースファイル内の定義のみが、ファイル llib-lx.ln に書き込まれます。

% lint -ox file1.c file2.c

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

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

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

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

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

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

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

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

指定されたディレクトリが標準の場所の前に検索されます。