複数の定義エラーの解決: C の変数スコープを理解する
C では、変数の複数の定義によりコンパイル エラーが発生する可能性があります。この問題を理解するために、指定されたシナリオを詳しく調べてみましょう。
提供されている 4 つのファイル (FileA.cpp、FileA.h、FileB.cpp、および FileB.h) について考えてみましょう。 FileB.h では、wat という名前のグローバル変数が int wat; として宣言されています。ただし、コンパイル中に、コンパイラは wat の複数の定義を検出します。
このエラーは、変数 wat が FileB.h と FileB.cpp の両方で定義されているために発生します。デフォルトでは、C はグローバル変数をグローバル スコープに配置し、すべてのコンパイル単位で共有します。同じ変数の定義が複数存在する場合、コンパイラはどの定義を使用するかを決定できません。
この問題を解決するには、前方宣言の概念を利用できます。この手法を使用すると、変数の定義を指定せずに変数の存在を宣言できます。この場合、FileB.h を次のように変更します。
extern int wat;
FileB.cpp で、通常どおり変数を定義します。
int wat = 0;
extern キーワードを使用して、コンパイラは、wat がプログラム内の別の場所に存在し、その定義が後で提供されることを通知します。これにより、wat の宣言と定義が 1 回だけ行われることが保証されます。
要約すると、変数が適切なスコープ設定メカニズムなしで複数回定義されると、複数の変数定義が発生します。前方宣言は、変数の定義を特定のソース ファイルに延期しながら、変数の存在を示すことで、この問題を解決するのに役立ちます。
以上がC のグローバル変数によって引き起こされる複数の定義エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。