エラーメッセージ

コンパイラやリンカが出力するエラーメッセージのうち、 代表的なものを説明します。

目次

構文エラー

メッセージ

ファイル名(行番号): error C141: syntax error near 'プログラムの一部'

.\SAMPLE.C(40): error C141: syntax error near 'int'
.\SAMPLE.C(60): error C141: syntax error near '}'

説明

文法に誤りがあります。 括弧 (特に「{」と「}」) の対応がとれていない (どちらかが多い) 、 「;」が無いといった場合には、 表示された行番号とはかなり離れた場所に原因があることが少なくありません。 また、 変数の宣言が実行文より後にある 場合もこのエラーになります。

参考: 括弧の対応づけ

未定義の識別子

メッセージ

ファイル名(行番号): warning C280: '識別子': undefined identifier

.\SAMPLE.C(18): error C220: 'x': undefined identifier

説明

定義されていない識別子を使用しています。 例えば、未定義の変数を使用しています。

未使用変数

メッセージ

ファイル名(行番号): warning C280: '変数名': unreferenced local variable

.\SAMPLE.C(18): warning C280: 'x': unreferenced local variable

説明

変数として宣言していますが、代入も読み出しもされていないものがあります。

実数演算

メッセージ

*** FATAL ERROR L210: I/O ERROR ON INPUT FILE:
    EXCEPTION 0021H: PATH OR FILE NOT FOUND
    FILE: C:\KEIL\C51\LIB\C51FPS.LIB

説明

「実数」を使おうとしていますが、使えません。 原因としては、 等があります。 値を10倍するなどして、整数演算だけでプログラムを作成してください。

未使用関数

メッセージ

*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT ?PR?関数名?ファイル名

*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT ?PR?_SHOWINT?SAMPLE

説明

定義しただけで一度も参照されない関数があるので、 バイナリプログラムには組み込まずに、無視しました。 関数名は全て大文字に変換され、先頭に下線「_」が付きます。 ファイル名も大文字になり、拡張子 (例えば「.C」) は省略されます。

関数の定義だけを書いて、 文法チェックのためにコンパイルした場合など、 意図的に参照されない関数を存在させている際には無視してもかまいません。

REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL

メッセージ

*** WARNING Lnumber: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  symbol-name
    MODULE:  sample.obj (SAMPLE)

*** WARNING L1: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  MY_FUNCTION
    MODULE:  sample.obj (SAMPLE)

説明

定義されていない関数または変数を参照しています。 定義側、参照側のいずれか、または、両方で、 関数名または変数名を間違えている可能性があります。

本来は致命的エラーとすべきものです。 しかし、今回使用するリンカは警告にとどめてしまい、 時には誤動作するコードを生成します。


戻る