1. ホーム
  2. デバッギング

g++コンパイルエラー解析 "このスコープでは宣言されていません"

2022-02-26 04:47:36
プログラムをコンパイルすると、「"was not declared in this scope"」と表示されます。
解析の結果、以下のような理由が判明しました。
1. 変数、関数、またはクラスが宣言または定義されていない。これは最も単純なケースですが、私はよく間違えます(基本的に、これらの理由の中で最も可能性が高いものでもあります)。
また、このプロンプトエラーの原因として、以下のことがネット上で指摘されています。

<スパン 2. ヘッダーファイルが互いに #include しているため、依存関係エラーが発生します。例えば、ヘッダーファイルが以下のような循環的な依存関係を形成している。

/***file a ****/
#ifndef FILE_A_
#define FILE_A_
#include <file b>
#endif 


/****file b ***/
#ifndef FILE_B_
#define FILE_B_
#include <file a>
#endif 





ファイルaの変数、関数、クラスをファイルbで使用する場合、ファイルaの#include <file b>ステートメントを実行するとファイルbの#include <file a>ステートメントは実行できず、#ifndefおよび#defineによるエラーが発生します。
3. ヘッダーファイルの名前が誤ってライブラリのヘッダーファイルの名前になっており、そのライブラリのヘッダーファイルがプログラム内で使用されていた。
これにより、マクロの名前が変更され、ヘッダの1つは#ifndefのために効果を失ったはずです。当然、他のどのファイルもこのヘッダーファイルの宣言を見つけることができず、このスコープでデクリアされなかったと言うことになります