VC 6.0一般的なコンパイルエラーメッセージ添付解決方法
4297 ワード
(1)error C 2001:newline in constant
番号:C 2001直訳:定数の中で改行が発生しました。エラー解析:1.①文字列の定数、文字の定数に改行があるか。2.②この文の中で、ある文字列の定数の末尾に二重引用符が抜けているかどうか。3.③この文では、ある文字のクリッピング量に二重引用符「」が現れていますか?ただし、「\」は使用されていません。4.④この文の中で、ある文字の定数の末尾に単引用符が抜けていますか?5.⑤語句の末尾、または語句の間に、一重引用符または二重引用符が誤って入力されているかどうか。
(2)error C 2015:too many characters in constant
番号:C 2015直訳:文字の常数の中の文字が多すぎます。エラー解析:シングルクォーテーションマークは文字型の定数を表します。一般的には、1つの引用符の中に1つの文字しかないものが必要です(変換記号を使用する場合は、1つの文字として扱われます)。1つの引用符の文字数が4つ以上あると、このエラーが発生します。また、文の中のある文字の定数が右側のシングルクォーテーションマークに欠けていると、このエラーが発生します。例えば、if(x=='x|x==''y'){…}は、シングルクォーテーションマークの文字数が2-4文字であれば、コンパイルが間違っていないということで、出力結果はこれらの文字のASCコードが整数(int,4 B)として数字全体を見ることに注意します。
(3)error C 2137:empty character constant
番号:C 2137直訳:空の文字定義。エラー解析:原因は二つのシングルクォーテーションマークを使っていますが、中には何の文字もありません。これは許可されていません。
(4)error C 2018:unknown character'0 x钾
番号:C 2018直訳:未知文字‘0 x夜噫’。エラー解析:0 x〓〓〓は文字ASCコードの16進表記法です。ここでいう未知の文字は、一般的には全角記号、アルファベット、数字、または直接漢字を入力することを意味します。全角文字と漢字をダブルクォーテーションで含めると、文字列の定数の一部となり、このエラーは発生しません。
(5)error C 2041:illegal digit'咻'for base'8'
番号:C 2141直訳:八進制において不正な数字が出現しました。エラー解析:ある数値定数が「0」で始まると(単純な数字0を除く)コンパイラは8進数の数字だと思います。例えば、「089」、「078」、「093」は不法ですが、「071」は合法です。
(6)error C 2065:'xxxx':undeclared identifer
番号:C 2065直訳:識別子「xxxx」は定義されていません。エラー解析:まず、識別子とは何かを説明します。マーカーは、プログラムに出てくるキーワード以外の単語で、通常はアルファベットと数字と下線からなります。数字で始まることはできません。キーワードと重複することはできません。そして、大文字と小文字を区別します。変数名、関数名、クラス名、定数名などは、すべてフラグです。すべてのフラグは先に定義してから使用しなければなりません。ロゴにはいろいろな用途がありますので、エラーもいろいろあります。
1.「xxxx」が変数名である場合、通常はプログラマが変数を定義することを忘れています。またはスペルミス、サイズ書き間違いによって引き起こされるので、まず変数名が正しいかどうかを確認します。関連:変数、変数定義)2.「xxxx」が関数名である場合、関数名が定義されていないかどうかが疑われます。スペルミスや大文字小文字エラーかもしれません。もちろん、あなたが呼び出した関数が存在しない可能性もあります。もう一つの可能性があります。あなたが書いた関数は、あなたのところの関数を呼び出した後、呼び出し前に関数の原形を説明しましたか?関連:関数の説明と定義、関数のプロトタイプ)3.もし「xxxxx」がライブラリ関数の関数名であるならば、例えば「sqrt」、「fabs」を参照してください。cppファイルにこれらのライブラリ関数のあるヘッダファイルが含まれているかどうかを確認してください。例えば、「sqrt」関数を使うにはヘッダファイルmath.hが必要です。もし「xxxx」が「cin」または「cout」であれば、「iostream.h」は含まれていません。関連:萼include、cin、cout)4.もし「xxxx」がクラス名であれば、このクラスが定義されていないことを示す可能性は依然としてあります。関連:類、類定義)5.標識は先に説明してから使用する原則に従う。したがって、変数、関数名、クラス名を問わず、先に定義してから使用しなければなりません。使用前に、説明後にこのエラーが発生します。6.C++の作用域もこのエラーを引き起こす落とし穴になります。括弧内の変数は、この括弧以外では使用できません。クラス、関数、if、do、forによる括弧はこの規則に従います。関連:作用ドメイン)7.前の文のエラーがコンパイラに間違っていると誤解される可能性があります。前の変数定義文にエラーがあったら、コンパイラは後のコンパイラでこの変数を定義したことがないと判断します。この変数を使ったステートメントは全部このエラーを報告します。関数の説明文に誤りがあると同じ問題が発生します。
(7)error C 2086:'xxxx':redefinition
番号:C 2374直訳:「xxxx」は繰り返し説明します。エラー解析:変数「xxxxx」は同じスコープで何度も定義されています。「xxxx」の定義をチェックして、一つだけ残して、または変数名を変更します。
(8)error C 2374:'xxxx':redefinition;multiple initialization
番号:C 2374直訳:「xxxx」は繰り返し説明し、何度も初期化する。エラー解析:変数「xxxxx」は同じスコープで何度も定義され、何度も初期化されました。「xxxx」の定義をチェックして、一つだけ残して、または変数名を変更します。
(9)C 2143:syntax error:missing''before(identifer)'xxxx'
番号:C 2143直訳:「xxxx」の前に番号が足りません。エラー解析:これはVC 6のコンパイル期間で最も一般的な誤報です。このエラーが発生した時、よく指摘されている語句は誤りではなく、前の文にエラーが発生しました。実は、より適切な方法はコンパイラが前の文の末尾にセミコロンが欠けていることを報告することです。前の文の多くのエラーはコンパイラにこのエラーを報告させます。
1.前の文の末尾には本当にセミコロンが欠けています。それなら追加すればいいです。2.前の文が不完全だったり、明らかな文法的エラーがあったり、一言の語句を入れることができなかったりします。3.エラーが発生したステートメントがcppファイルの最初の行のステートメントであることを発見した場合、このファイルではエラーがないことを確認しますが、ダブル引用符を使ってあるヘッダファイルを含んでいます。このヘッダファイルの末尾にはエラーがあるかもしれません。
(10)error C 4716:'xxx':must return a value
番号:C 4716直訳:「xxx」は値を返さなければなりません。エラー解析:関数は、戻り値(voidではない)があると宣言しましたが、関数の実装では、リターン値を忘れました。関数が確かに値を返していない場合、その戻り値のタイプを変更するか、関数が終了する前に適切な値を返します。
(11)warning C 4508:'main':function shound return a value;'void'return type asumed
番号:C 4508直訳:main関数は値を返すべきです。void戻り値タイプが想定されている。エラー解析:
1.関数には戻り値があるはずです。関数を宣言する時は戻り値の種類を指定します。確かに戻り値がない場合は、関数の戻り値をvoidとして宣言します。関数の戻り値の種類が宣言されていない場合、システムはデフォルトで整数intとなります。ここでのエラー推定は、main関数にはリターンステートメントがありませんが、main関数は戻り値のタイプを宣言していないか、または宣言しています。2.warningタイプのエラーは警告性質のエラーで、その意味は間違いがあるとは限らないので、プログラムは依然として成功的にコンパイル、リンクされますが、問題があるかもしれません。リスクがあります。
(12)warning C 4700:local variable'xxx'used without having been initialized
警告ローカル変数「xxx」は使用前に初期化されていません。エラー分析:これは初心者にありがちなエラーです。例えば、以下のプログラムで警告が発生します。また、プログラムに問題があります。コンパイルしてもリンクしても成功できます。――修正しないと、xの値はいくらなのかは確定できません。ランダムです。3と同じ意味がないかどうかを判断します。運が悪い場合、デバッグプログラムのマシンで動作すると、結果は正しいように見えるかもしれませんが、コンピュータを交換してから実行したら、結果は違っています。初心者は迷ってしまいがちです。int x;if(x==3)printf("hello")
番号:C 2001直訳:定数の中で改行が発生しました。エラー解析:1.①文字列の定数、文字の定数に改行があるか。2.②この文の中で、ある文字列の定数の末尾に二重引用符が抜けているかどうか。3.③この文では、ある文字のクリッピング量に二重引用符「」が現れていますか?ただし、「\」は使用されていません。4.④この文の中で、ある文字の定数の末尾に単引用符が抜けていますか?5.⑤語句の末尾、または語句の間に、一重引用符または二重引用符が誤って入力されているかどうか。
(2)error C 2015:too many characters in constant
番号:C 2015直訳:文字の常数の中の文字が多すぎます。エラー解析:シングルクォーテーションマークは文字型の定数を表します。一般的には、1つの引用符の中に1つの文字しかないものが必要です(変換記号を使用する場合は、1つの文字として扱われます)。1つの引用符の文字数が4つ以上あると、このエラーが発生します。また、文の中のある文字の定数が右側のシングルクォーテーションマークに欠けていると、このエラーが発生します。例えば、if(x=='x|x==''y'){…}は、シングルクォーテーションマークの文字数が2-4文字であれば、コンパイルが間違っていないということで、出力結果はこれらの文字のASCコードが整数(int,4 B)として数字全体を見ることに注意します。
(3)error C 2137:empty character constant
番号:C 2137直訳:空の文字定義。エラー解析:原因は二つのシングルクォーテーションマークを使っていますが、中には何の文字もありません。これは許可されていません。
(4)error C 2018:unknown character'0 x钾
番号:C 2018直訳:未知文字‘0 x夜噫’。エラー解析:0 x〓〓〓は文字ASCコードの16進表記法です。ここでいう未知の文字は、一般的には全角記号、アルファベット、数字、または直接漢字を入力することを意味します。全角文字と漢字をダブルクォーテーションで含めると、文字列の定数の一部となり、このエラーは発生しません。
(5)error C 2041:illegal digit'咻'for base'8'
番号:C 2141直訳:八進制において不正な数字が出現しました。エラー解析:ある数値定数が「0」で始まると(単純な数字0を除く)コンパイラは8進数の数字だと思います。例えば、「089」、「078」、「093」は不法ですが、「071」は合法です。
(6)error C 2065:'xxxx':undeclared identifer
番号:C 2065直訳:識別子「xxxx」は定義されていません。エラー解析:まず、識別子とは何かを説明します。マーカーは、プログラムに出てくるキーワード以外の単語で、通常はアルファベットと数字と下線からなります。数字で始まることはできません。キーワードと重複することはできません。そして、大文字と小文字を区別します。変数名、関数名、クラス名、定数名などは、すべてフラグです。すべてのフラグは先に定義してから使用しなければなりません。ロゴにはいろいろな用途がありますので、エラーもいろいろあります。
1.「xxxx」が変数名である場合、通常はプログラマが変数を定義することを忘れています。またはスペルミス、サイズ書き間違いによって引き起こされるので、まず変数名が正しいかどうかを確認します。関連:変数、変数定義)2.「xxxx」が関数名である場合、関数名が定義されていないかどうかが疑われます。スペルミスや大文字小文字エラーかもしれません。もちろん、あなたが呼び出した関数が存在しない可能性もあります。もう一つの可能性があります。あなたが書いた関数は、あなたのところの関数を呼び出した後、呼び出し前に関数の原形を説明しましたか?関連:関数の説明と定義、関数のプロトタイプ)3.もし「xxxxx」がライブラリ関数の関数名であるならば、例えば「sqrt」、「fabs」を参照してください。cppファイルにこれらのライブラリ関数のあるヘッダファイルが含まれているかどうかを確認してください。例えば、「sqrt」関数を使うにはヘッダファイルmath.hが必要です。もし「xxxx」が「cin」または「cout」であれば、「iostream.h」は含まれていません。関連:萼include、cin、cout)4.もし「xxxx」がクラス名であれば、このクラスが定義されていないことを示す可能性は依然としてあります。関連:類、類定義)5.標識は先に説明してから使用する原則に従う。したがって、変数、関数名、クラス名を問わず、先に定義してから使用しなければなりません。使用前に、説明後にこのエラーが発生します。6.C++の作用域もこのエラーを引き起こす落とし穴になります。括弧内の変数は、この括弧以外では使用できません。クラス、関数、if、do、forによる括弧はこの規則に従います。関連:作用ドメイン)7.前の文のエラーがコンパイラに間違っていると誤解される可能性があります。前の変数定義文にエラーがあったら、コンパイラは後のコンパイラでこの変数を定義したことがないと判断します。この変数を使ったステートメントは全部このエラーを報告します。関数の説明文に誤りがあると同じ問題が発生します。
(7)error C 2086:'xxxx':redefinition
番号:C 2374直訳:「xxxx」は繰り返し説明します。エラー解析:変数「xxxxx」は同じスコープで何度も定義されています。「xxxx」の定義をチェックして、一つだけ残して、または変数名を変更します。
(8)error C 2374:'xxxx':redefinition;multiple initialization
番号:C 2374直訳:「xxxx」は繰り返し説明し、何度も初期化する。エラー解析:変数「xxxxx」は同じスコープで何度も定義され、何度も初期化されました。「xxxx」の定義をチェックして、一つだけ残して、または変数名を変更します。
(9)C 2143:syntax error:missing''before(identifer)'xxxx'
番号:C 2143直訳:「xxxx」の前に番号が足りません。エラー解析:これはVC 6のコンパイル期間で最も一般的な誤報です。このエラーが発生した時、よく指摘されている語句は誤りではなく、前の文にエラーが発生しました。実は、より適切な方法はコンパイラが前の文の末尾にセミコロンが欠けていることを報告することです。前の文の多くのエラーはコンパイラにこのエラーを報告させます。
1.前の文の末尾には本当にセミコロンが欠けています。それなら追加すればいいです。2.前の文が不完全だったり、明らかな文法的エラーがあったり、一言の語句を入れることができなかったりします。3.エラーが発生したステートメントがcppファイルの最初の行のステートメントであることを発見した場合、このファイルではエラーがないことを確認しますが、ダブル引用符を使ってあるヘッダファイルを含んでいます。このヘッダファイルの末尾にはエラーがあるかもしれません。
(10)error C 4716:'xxx':must return a value
番号:C 4716直訳:「xxx」は値を返さなければなりません。エラー解析:関数は、戻り値(voidではない)があると宣言しましたが、関数の実装では、リターン値を忘れました。関数が確かに値を返していない場合、その戻り値のタイプを変更するか、関数が終了する前に適切な値を返します。
(11)warning C 4508:'main':function shound return a value;'void'return type asumed
番号:C 4508直訳:main関数は値を返すべきです。void戻り値タイプが想定されている。エラー解析:
1.関数には戻り値があるはずです。関数を宣言する時は戻り値の種類を指定します。確かに戻り値がない場合は、関数の戻り値をvoidとして宣言します。関数の戻り値の種類が宣言されていない場合、システムはデフォルトで整数intとなります。ここでのエラー推定は、main関数にはリターンステートメントがありませんが、main関数は戻り値のタイプを宣言していないか、または宣言しています。2.warningタイプのエラーは警告性質のエラーで、その意味は間違いがあるとは限らないので、プログラムは依然として成功的にコンパイル、リンクされますが、問題があるかもしれません。リスクがあります。
(12)warning C 4700:local variable'xxx'used without having been initialized
警告ローカル変数「xxx」は使用前に初期化されていません。エラー分析:これは初心者にありがちなエラーです。例えば、以下のプログラムで警告が発生します。また、プログラムに問題があります。コンパイルしてもリンクしても成功できます。――修正しないと、xの値はいくらなのかは確定できません。ランダムです。3と同じ意味がないかどうかを判断します。運が悪い場合、デバッグプログラムのマシンで動作すると、結果は正しいように見えるかもしれませんが、コンピュータを交換してから実行したら、結果は違っています。初心者は迷ってしまいがちです。int x;if(x==3)printf("hello")