g++コンパイルエラー解析 "このスコープでは宣言されていません"
2022-02-26 04:47:36
プログラムをコンパイルすると、「"was not declared in this scope"」と表示されます。
解析の結果、以下のような理由が判明しました。
1. 変数、関数、またはクラスが宣言または定義されていない。これは最も単純なケースですが、私はよく間違えます(基本的に、これらの理由の中で最も可能性が高いものでもあります)。
また、このプロンプトエラーの原因として、以下のことがネット上で指摘されています。
3. ヘッダーファイルの名前が誤ってライブラリのヘッダーファイルの名前になっており、そのライブラリのヘッダーファイルがプログラム内で使用されていた。
これにより、マクロの名前が変更され、ヘッダの1つは#ifndefのために効果を失ったはずです。当然、他のどのファイルもこのヘッダーファイルの宣言を見つけることができず、このスコープでデクリアされなかったと言うことになります
解析の結果、以下のような理由が判明しました。
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のために効果を失ったはずです。当然、他のどのファイルもこのヘッダーファイルの宣言を見つけることができず、このスコープでデクリアされなかったと言うことになります
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例