コンパイラー・メッセージ

コンパイラーは C または C++ ソース・プログラムのコンパイル中にプログラミング・エラーを検出すると、標準エラー・デバイスに診断メッセージを発行し、該当するオプションが選択されている場合は、リスト表示ファイルに診断メッセージを発行します。

この節では、コンパイラーがコンパイル・エラーの記述に使用するいくつかの基本的な報告メカニズムについても概説します。

コンパイラーは C または C++ 言語に特定のメッセージを発行します。

C のみ コンパイラー・オプション -qsrcmsgを指定しており、エラーが特定のコード行に該当する場合、再構成されたソース行または一部のソース行がエラー・メッセージと共に STDERR ファイルに組み込まれます。再構成されたソース行とは、すべてのマクロが展開された、プリプロセス済みのソース行です。

-qsourceコンパイラー・オプションを指定すると、コンパイラーはメッセージをソース・リストに入れます。例えば、コマンド行呼び出し xlc -qsource filename.c を使用してファイルをコンパイルすると、現行ディレクトリーで filename.lst と呼ばれるファイルが検出されます。

-qflag オプションまたは -wオプションを指定すると、重大度に応じて出される診断メッセージを制御することができます。 プログラム内に潜在する問題についての追加の情報メッセージを得るには、-qinfoオプションを使用します。

コンパイラー・メッセージ・フォーマット

-qnosrcmsg オプションがアクティブ (これがデフォルト) の場合、診断メッセージのフォーマットは以下の通りです。

"file"、line line_number.column_number: 15dd-nnn (severity) text

ここで、

file エラーのある C または C++ ソース・ファイルの名前です。
line_number エラーの行番号です。
column_number エラーの列番号です。
15 コンパイラー製品 ID です。
dd このメッセージを発行した XL C/C++ コンポーネントを示す 2 桁のコードです。dd は、以下の値のいずれかになります。
00
- メッセージを生成または最適化するコード
01
- コンパイラー・サービス・メッセージ
05
- C コンパイラーに特定のコンパイラー・サービス・メッセージ
06
- C コンパイラーに特定のコンパイラー・サービス・メッセージ
40
- C++ コンパイラーに特定のコンパイラー・サービス・メッセージ
86
- プロシージャー間分析 (IPA) に特定のメッセージ
nnn メッセージ番号です。
severity エラーの重大度を表す文字です。
text エラーを記述するメッセージです。

-qsrcmsg オプションが指定されている場合、診断メッセージのフォーマットは以下の通りです。

x - 15dd-nnn(severity) text.

ここで、x はフィンガー行のフィンガーを示す文字です。

メッセージ重大度レベルとコンパイラー応答

XL C/C++ は診断メッセージに対して 5 段階の分類方式を使用します。重大度の各レベルは、コンパイラー応答と関連しています。すべてのエラーがコンパイルを停止するわけではありません。以下のテーブルは、重大度レベルの省略形とそのレベルに関連したコンパイラー・オプションを提供します。

文字 重大度 コンパイラー応答
I 通知 コンパイルは継続します。このメッセージは、コンパイル中に検出された条件を報告します。
W 警告 コンパイルは継続します。 メッセージは、有効ではあるが、おそらく意図されたものではない条件を報告します。
E エラー C のみ コンパイルは継続し、オブジェクト・コードが生成されます。コンパイラーが訂正できるエラー条件が存在しますが、プログラムが予期される結果を生み出さない可能性があります。
S 重大エラー コンパイルは継続しますが、 オブジェクト・コードは生成されません。 コンパイラーが訂正できないエラー条件が存在します。
U 回復不能エラー コンパイラーは停止します。 内部コンパイラー・エラーが発生しました。
  • メッセージがリソースの限界 (例えばファイル・システムまたはページング・スペースがいっぱいになった) を 示している場合は、リソースを追加して再コンパイルしてください。
  • メッセージが別のコンパイラー・オプションの必要性を示している場合は、それらを使用して 再コンパイルしてください。
  • 回復不能エラーの前に報告されたその他のエラーを検査して訂正してください。
  • メッセージが内部のコンパイラー・エラーを示している場合は、このメッセージを IBM 技術員に報告してください。

関連情報