C コンパイル プロセス中に、ヘッダー ファイルが複数回参照されるというエラーが頻繁に発生します。このエラーは、ヘッダー ファイルが複数の場所で参照されている場合、その内容がそれぞれの場所にコピーされるため、コンパイラがそれらのファイルをリンクするときに重複定義エラーが発生します。
このエラーが発生した場合は、次の解決策を実行できます。
1. プリコンパイル済みヘッダー ファイルを使用する
まず、プリコンパイル済みヘッダー ファイル (PCH) を使用すると、このエラーを回避できます。 PCHは、よく使うヘッダファイルをあらかじめコンパイルしておくことで、同じヘッダファイルが複数参照される問題を回避できる技術です。 PCH を使用するには、いくつかのコンパイラ オプションを設定する必要があります。詳細については、コンパイラのドキュメントを参照してください。
2. ヘッダー ファイル保護を使用する
もう 1 つの解決策は、ヘッダー ファイル保護 (ヘッダー ファイル ガード) を使用することです。ヘッダー ファイルの保護とは、同じヘッダー ファイルが複数回参照される問題を回避するために、ヘッダー ファイルにプリプロセッサ ディレクティブを追加することを指します。ヘッダー ファイルの保護形式は次のとおりです。
#ifndef HEADER_FILE_NAME #define HEADER_FILE_NAME // 头文件内容 #endif
このうち、HEADER_FILE_NAME
は、このヘッダー ファイルを一意に識別するための任意の識別子に置き換えることができます。コンパイラがこのヘッダー ファイルを初めて検出したときは、HEADER_FILE_NAME
を定義してからヘッダー ファイルをコンパイルします。コンパイラがこのヘッダー ファイルを 2 回目に検出したときは、HEADER_FILE_NAME
であるため、ヘッダー ファイルをコンパイルします。が定義されている場合、コンパイラはこのファイルを直接スキップします。これにより、同じヘッダー ファイルが複数回定義される問題を回避できます。
3. #pragma Once を使用する
ヘッダー ファイルの保護に加えて、C では、ヘッダー ファイルが複数参照される問題を回避するための #pragma Once
の使用もサポートしています。回。 #pragma Once
は、ヘッダー ファイルが 1 回だけコンパイルできることをマークするために使用される特別なプリプロセッサ ディレクティブです。 #pragma Once
を使用する形式は非常に簡単です。ヘッダー ファイルの先頭に次の命令を追加するだけです:
#pragma once // 头文件内容
コンパイラがこのヘッダー ファイルを初めて検出したとき, このファイルのパスとファイル名は記録され、コンパイル済みファイルとしてマークされます。コンパイラーがこのヘッダー ファイルを 2 回目に検出すると、まず以前にコンパイルされたことがあるかどうかを確認し、コンパイルされている場合は、直接渡された場合はジャンプします。それ以外の場合はコンパイルを続行します。 #pragma Once
を使用すると、ヘッダー ファイル保護の構文が簡素化され、コンパイル速度が向上します。
つまり、PCH、ヘッダー ファイル保護、#pragma Once
のいずれを使用しても、同じヘッダー ファイルが複数回参照されるエラーを効果的に回避できます。実際のプログラミングでは、ヘッダー ファイルへの繰り返しの参照を避け、このエラーを回避する適切な解決策を選択する必要があります。
以上がC++ コンパイル エラー: ヘッダー ファイルが複数回参照されています。解決方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。