ホームページ >バックエンド開発 >C++ >コードで「宣言されていない識別子」エラーが発生するのはなぜですか?

コードで「宣言されていない識別子」エラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 01:56:10150ブラウズ

Why Am I Getting

未宣言の識別子エラー: 原因と解決策

未宣言の識別子エラーは、コンパイラが次のような変数、関数、または型への参照を検出したときに発生します。現在のスコープ内で宣言または定義されていません。これらのエラーは通常、次のいずれかの理由によって発生します。

ヘッダー ファイルのインクルードの欠落

未宣言の識別子エラーの最も一般的な原因は、必要なヘッダー ファイルの欠落です。これには識別子の宣言が含まれます。たとえば、C では、次の例では、「cout」関数に対して「宣言されていない識別子」エラーが生成されます。

int main() {
    cout << "Hello world!" << endl;
    return 0;
}

この問題を解決するには、 を含めます。ヘッダー ファイル:

#include 
int main() {
    cout << "Hello world!" << endl;
    return 0;
}

変数または関数のスペルが間違っている

これらのエラーのもう 1 つの一般的な原因は、識別子のスペルが間違っていることです。たとえば、次のコードでは、2 行目の変数 'AComplicatedName' のスペルが間違っているため、エラーが発生します。

int main() {
    int aComplicatedName;
    AComplicatedName = 1;  /* mind the uppercase A */
    return 0;
}

スコープが正しくありません

識別子を宣言する必要がありますそれらが参照されるのと同じスコープ内で。たとえば、この例では、「std::string」を使用して「s1」と「s2」の両方を宣言する必要があります:

#include <string>

int main() {
    std::string s1 = "Hello"; // Correct.
    string s2 = "world"; // WRONG - would give error.
}

Use Before Declaration

C などの一部のプログラミング言語では、識別子を使用する前に宣言する必要があります。関数または変数が宣言前に参照されると、コンパイラは「宣言されていない識別子」エラーを生成します。例:

void f() { g(); }
void g() { }

このエラーを修正するには、'g' の定義を 'f' の前に移動します:

void g() { }
void f() { g(); }

または 'f' の前に 'g' の宣言を追加します。 ':

void g(); // declaration
void f() { g(); }
void g() { } // definition

stdafx.h が先頭にありません (ビジュアル) Studio 固有)

Visual Studio では、他のヘッダー ファイルを正しく処理するには、「#include "stdafx.h"」行がコードの最初の行である必要があります。この行が省略されているか先頭に配置されていない場合、コンパイラは後続の宣言を無視し、「宣言されていない識別子」エラーが発生する可能性があります。例:

#include <iostream>
#include "stdafx.h"

この例では、「#include 」無視され、コードはコンパイルに失敗します。この問題を解決するには、「#include "stdafx.h"」をファイルの先頭に移動します:

#include "stdafx.h"
#include <iostream>

以上がコードで「宣言されていない識別子」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。