コンパイルエラーまたはコンパイルエラーとは、コード内のエラー、またはより珍しいことにコンパイラ自体のエラーが原因で、コンパイラがコンピュータプログラムの ソースコードをコンパイルできなかった状態を指します。コンパイルエラーメッセージは、多くの場合、プログラマが ソースコードをデバッグするのに役立ちます。コンパイルと解釈の定義は曖昧な場合がありますが、一般的にコンパイルエラーは静的コンパイルのみを指し、動的コンパイルは指しません。ただし、多くのプログラマや情報源は動的コンパイルをランタイムエラーとして識別するかもしれませんが、動的コンパイルでも技術的にはコンパイルエラーが発生する可能性があります[要出典] 。Javascript V8エンジンなどのほとんどのジャストインタイムコンパイラは、実行時にチェックするため、コンパイルエラーを構文エラーとして曖昧に参照します。[1] [2]
例
一般的な C++ コンパイル エラー
- 宣言されていない識別子、例:
doy.cpp: In function `int main()':
doy.cpp:25: `DayOfYear' undeclared (first use this function)[3]
これは、変数「DayOfYear」が宣言される前に使用しようとしていることを意味します。
- 共通関数が宣言されていません。例:
xyz.cpp: In function `int main()': xyz.cpp:6: `cout' undeclared (first use this function)[3]
これは、プログラマーがiostreamを組み込むのを忘れた可能性が高いことを意味します。
- 解析エラー、例:
somefile.cpp:24: parse error before `something'[4]
これは、前のステートメントの末尾にセミコロンがないことを意味する可能性があります。
内部コンパイラエラー
内部コンパイラ エラー (一般に ICE と略される) は、ソース コードの誤りが原因ではなく、コンパイラ自体のバグが原因で発生するエラーです。エラーによって示された行 (そのような行が示されている場合) の周囲のソース コードに小さな重要でない変更を加えることで回避できる場合もありますが、[5] [より適切なソースが必要] 、特定の構造を回避するために、コードのリファクタリングなどの大きな変更が必要になる場合もあります。別のコンパイラまたは別のバージョンのコンパイラを使用すると、問題が解決し、場合によっては受け入れられる解決策になることがあります。内部コンパイラ エラーが発生すると、多くのコンパイラは標準エラーを出力せず、代わりに短縮バージョンを出力し、内部コンパイラ エラーにのみ提供される追加ファイルを添付します。これは、エラーをログに記録するときにプログラムがクラッシュしないようにするためです。クラッシュすると、エラーの解決がほぼ不可能になります。内部コンパイラ エラーに添付される追加ファイルは、通常、Java.dumpなどの特別な形式で保存されます。これらの形式は通常のファイルよりも解析が難しいですが、クラッシュの原因となるバグを解決するために非常に役立つ情報が含まれている場合があります。[6]
内部コンパイラ エラーの例:
somefile.c:1001: 内部コンパイラ エラー: セグメンテーション エラー 完全なバグレポートを提出してください。 適切な場合は前処理されたソースを使用します。 手順については、<http://bugs.gentoo.org/> を参照してください。
参考文献
- ^ 「エラー | Node.js v7.9.0 ドキュメント」。nodejs.org。2017年4 月 14 日閲覧。
- ^ 「SyntaxError」。Mozilla Developer Network 。2017年4月14日閲覧。
- ^ ab 「一般的な C++ コンパイラおよびリンカー エラー」。2008 年 2 月 16 日時点のオリジナルよりアーカイブ。2008年 2 月 12 日閲覧。
- ^ 「コンパイラ、リンカー、および実行時エラー」。
- ^ Cunningham, Ward (2010-03-18). 「コンパイラのバグ」. WikiWikiWeb . 2017-04-14閲覧。
- ^ జగదేశ్. 「JVM クラッシュの分析」. 2017 年 4 月 15 日閲覧。
