Sun Studio 12: C ユーザーズガイド

7.2.2 ツール

lint プログラムの -errchk オプションは、64 ビットへの移植でエラーになる可能性のある問題を検出します。cc -v を指定して、-v を付けずにコンパイルするよりも、より厳密な意味検査を行うようコンパイラに指示することもできます。-v オプションは、指定されたファイルに対して lint に似た検査もいくつか行います。

64 ビット環境で安全なコードにするには、Solaris オペレーティングシステムに含まれているヘッダーファイルを使用してください。このヘッダーファイルには、64 ビットコンパイル環境用の派生型とデータ構造体の正しい定義が含まれています。

7.2.2.1 lint

32 ビットおよび 64 ビットの両方のコンパイル環境用に作成したコードの検査には、lint を使用してください。LP64 の警告を生成するには、-errchk=longptr64 オプションを使用します。また、ロング整数とポインタのサイズが 64 ビットで普通の整数のサイズが 32 ビットの環境への移植性を検査する場合も-errchk=longptr64 フラグを使用してください。-errchk=longptr64 フラグは、明示的な型変換が使用されているときにも、ポインタ式とロング整数式の普通の整数への代入を検査します。

符号なし整数型の式における符号付き整数値の符号拡張を ISO C の通常の値保持規則が認めるコードを検索するには、-errchk=longptr64,signext オプションを使用してください。

Solaris の 64 ビットコンパイル環境でだけ実行するコードを検査する場合は、lint-Xarch=v9 オプションを使用してください。x86 64 ビット環境でだけ実行するコードを検査する場合は、-Xarch=amd64 を使用します。

警告する場合、lint は問題のコードの行番号とその問題の内容や、ポインタが関連するかどうかを示すメッセージを表示します。また、関係するデータ型のサイズも示します。ポインタが関係していること、データ型のサイズがわかれば、64 ビットの問題を特定し、32 ビットとそれより小さい型の間に以前から存在している問題を避けることできます。

ただし、64 ビット環境でエラーになる可能性のある問題について警告を出すといっても、lint によってすべての問題が検出できるわけではありません。多くの場合、意図したとおりであり、正しいコードであっても、警告は出されます。

行の前に NOTE(LINTED(<任意のメッセージ>)) の形式のコメントを挿入すると、特定の行に対する警告を抑止できます。この機能は、リンクや型変換や代入などの行を無視させる場合に役立ちます。ただし、現実には存在する問題が隠される可能性があるため、NOTE(LINTED(<任意のメッセージ>)) コメントを使用するときは、細心の注意を払ってください。NOTE を使用する場合、#include<note.h> のようにして note.h をインクルードしてください。詳細は、lint のマニュアルページを参照してください。