-

Error Checking and Reporting

提供: HI-TECH C for CP/M Fan WIKI(JP)
移動先: 案内検索

エラーチェックとレポート

エラーはコンパイラのどのパスからもレポートされますが、実用的にはアセンブラとオプティマイザ はコード生成時に何もエラーを起こしません。各パスから生成されるエラーのタイプについては、以下にまとめてあります。

一般的にエラーはソースファイル名と、それが検出された行で特定されます。P1はエラーが検出された内部関数の名前も挙げます。

エラーはファイルに対して、普通の書式でわ、つまり、「大なり」('>') 記号でその後にエラーが書き込まれるべきファイル名が続きます。その名前はもちろん CP/MのLST:やMS-DOSのPRNといったデバイス名も可能です。

CPPは条件的コンパイルと同様に、マクロ定義や拡張に関するエラーもレポートします。

P1はほとんどのエラーをレポートするパスです。入力の書式と意味論的チェックをし、両方の致命的な警告エラーがあった場合にレポートします。シンタックスエラーは普通"symbol expected"もしくは "symbol unexpected"と表示されます。意味論的なエラーは変数の未定義、再定義、もしくは定義ミスです。P1は未使用、もしくは未参照の変数定義をレポートします。これらのエラーの大抵の部分は型チェック警告です。

P1がエラーに遭遇した時、スクリーンにエラーのあるソースの行が表示され、その下にメッセージとコンパイルがエラーを検出した部分に上矢印のポイントが出ます。行の始めや、前の行にも実際のエラーが発生する場合があります。

CGENは時々エラーを、普通は警告を、大抵の場合は稀な定数の型の組み合わせをレポートします。例えば、符号なしの数がゼロ以下になる場合などです。CGENが生成する致命的なエラーの1つは"can't generate code for this expression"で、これはいまコンパイルされている式(エクスプレッション)が何らかの理由でコードを生成するために複雑化し過ぎていることを意味します。これは普通はソースコードを書き直すことで克服します。このようなエラーは稀で、普通でない構造体でのみ発生します。

リンカは未定義や複数回定義されたシンボルのレポートをします。ヘッダファイル内における変数定義で、1つ以上のソースファイルからインクルードされるものは外部変数として定義し、シンボルの複数回定義エラーを回避します。従って、これらのシンボルはソースファイルに一対一で定義されなければなりません。

便利なエラーメッセージのリストは付録に入っています。