文書番号: 403007
最終更新日: 2004/04/27
この資料は以下の製品について記述したものです。
- Microsoft(R) QuickC(R) Compiler for MS-DOS(R) Version 2.0
- Microsoft(R) C Professional Development System Version 6.0
- Microsoft(R) C/C++ Development System for MS-DOS(R) and Windows(R)Version 7.0A (以下 C/C++ 7.0A)
- Microsoft(R) Visual C++(TM) Development System Standard Edition forWindows(R) Version 1.0 (以下 Visual C++ 1.0)
- Microsoft(R) Visual C++(TM) Development System Professional Edition forWindows(R) Version 1.0
- Microsoft(R) Visual C++(TM) Development System for Windows(R) Version 1.5(以下 Visual C++ 1.5)
概要
この資料は、コンパイル時に発生する以下のエラーの原因と解決方法について説明
したものです。
コンパイラの致命的なエラー: C1001 INTERNAL COMPILER ERROR
ヘルプやドキュメントの解説
『コンパイラが内部の矛盾を検出しました....』
詳細
INTERNAL COMPILER ERROR は、コンパイラがなんらかの原因で、ソースコードの解析
をそれ以上続けることができない事を示すコンパイラの内部エラーです。
エラー以降コンパイラが使用できないことを示している訳ではありません。
原因
多くの場合、コンベンショナルメモリが不足した状態や ソースコード中の複雑な
条件文、複雑な判断文が原因で発生します。また、関数自体が大きい場合や最適化
を行う場合も解析のためのメモリをより多く必要とするため、エラーが発生しやす
くなります。
コンパイラのバージョンアップに伴い、複雑な処理に対するエラーチェックが強化
されているため、旧バージョンで発生しなくとも、上記のような原因があると、
新バージョンでのリコンパイル時にエラーが発生することもあります。
対処方法
コンパイラへの負荷が原因となることが多いので、これを軽減します。
1)最適化の抑制。
コンパイルオプション /Od やプラグマ optimize、を使用する。
2)複雑な代入文、判断文の簡略化。
複数行に書き換えるなどする。
3)ソースコードの単純化。
個々の関数のサイズを小さくする、またはファイルを小さく分割する。
4)コンベンショナルメモリの確保。
CONFIG.SYS ファイルで登録しているデバイスドライバのうち、必要の無いものは削
除し、拡張メモリに対応しているものは DEVICEHIGH コマンドなどにより、コン
ベンショナルメモリ外に登録する。また、日本語入力システムに代表されるキャ
ラクタ系のデバイスは MS-DOS 外部コマンドの ADDDRV、DELDRV で動的な登録削
除が可能なので CONFIG.SYS での登録を避ける。
Keywords: C6 C7 KBPRB QC20 VC10 VC15 KB403007
Technology: kbAudDeveloper kbCCompPDS600DOS kbCCompSearch kbQC200 kbvc150 kbVCsearch kbZNotKeyword3 kbZNotKeyword8