第12回
エラーメッセージと対処方法(2)~1つのミスとたくさんのエラー

エラー確認の前準備

今回は、わざと間違えたソースをコンパイルしてエラーメッセージを確認します。まず、そのための準備をしておきましょう。エラーメッセージは標準エラー出力(ディスプレイ)に出力されるため、それをファイルに保存するようにします。また、たくさんのソースファイルを何度もコンパイルするので、バッチファイルも用意しておきます。

エラーメッセージを保存する

コンパイルにはLSI-C 86を使い、ソースファイルはC:\Clang\Srcフォルダに保存しているものとします。

コンパイルされて生成された実行形式ファイルはC:\Clang\Exeフォルダに保存することにします。すると、コマンドラインは以下のようになります(MS-DOSやWindows XPのコマンドプロンプトでは、コマンドやファイル名、フォルダ名での大文字/小文字の違いは認識されず、同じ文字として扱われます)。

LCC -j -oC:\Data\Clang\Exe\<ファイル名>.exe C:\Data\Clang\Src\<ファイル名>.c

エラーメッセージを日本語で出力するよう、“-j”オプションを付けておきます。

<ファイル名>の箇所には本コラムのサンプルの場合“ex1201”などの名前が入ります。例えばソースファイルex1201.cからex1201.exeを作るなら、以下のようなコマンドラインとなります。これで、エラーメッセージは“ex1201.ERR”というテキストファイルに保存されるようになります。

LCC -j -oC:\Data\CLANG\EXE\ex1201.EXE C:\Data\CLANG\SRC\ex1201.C
ソースや実行ファイルの保存場所は、上記の通りでなくても構いません。みなさんの都合のよい環境で試してください。なお、LSI-C試食版の入手方法については本コラムの第2回「Cプログラミングのお膳立て」で、作業環境の構築方法については第3回「ソースの入力から完成まで」で説明していますので、そちらを参照してください。

コンパイル用のバッチフィル

上記のコマンドラインに手を加え、以下のように<ファイル名>の箇所をコマンドライン引数として“%1”に置き換えたバッチファイルを作っておくと便利です。さらに、アンダーラインで示した箇所のようにエラーメッセージをテキストファイルにリダイレクトさせておくと、エラーの内容をあとからエディタで確認できます。

LCC -j -oC:\Data\Clang\Exe\%1.exe C:\Data\Clang\Src\%1.c
 > C:\Data\Clang\Src\%1.err 
前回説明したように、このエラーメッセージはタグファイル形式となっているため、エディタのタグジャンプ機能を使ってソースファイルを開き、示された行にカーソルを移動できるようになります。

なお、エラーメッセージは処理系によって微妙に異なります。今回紹介するのはLSI-C 86のものであり、Visual C++など他の処理系ではメッセージの内容やエラーの数が異なってきます。

バッチファイルの使い方

上記バッチファイルを“compile.bat”という名前でサンプルに加えてあります。以下のような書式で使用してください。

compile <ノード>
<ノード>にはソースファイルの拡張子を除いた部分を入力します。

例) ex1203.cからex1203.exeを生成する
compile ex1203[Enter]
但し、LSI-C 86を正しくインストールして“BIN”フォルダにPATHが通っていなければなりません。例えばC:\LSIC86にインストールしたら、以下のようにしてその下のBINフォルダにPATHを設定します。
PATH=C:\LSIC86\BIN
また、compile.batでは上記の説明にあったようにソースと実行ファイルの保存場所が固定されています。必要なら、“C:\Data\Clang\Exe”や“C:\Data\Clang\Src”の箇所を各自の環境に合わせて書き換えてください。