ヘッダーと実装ファイルのインクルードについて
C コードを使用する場合、ヘッダー ファイル (.h) のインクルードの違いを理解することが重要です。および実装ファイル (.cpp)。この区別は、コンパイル エラーを回避し、コード構成を維持するために重要です。
なぜヘッダー ファイルのみをインクルードするのですか?
ヘッダー ファイルの代わりに実装ファイル (.cpp) をインクルードしようとする場合ヘッダーファイル(.h)を編集すると、「関数が複数定義されている」などのコンパイルエラーが発生する場合があります。これは、ヘッダーには主に関数宣言とクラス仕様が含まれているのに対し、実装ファイルには実際の関数実装が含まれているためです。
実装ファイルを直接インクルードすると、関数のコードが複数のソース ファイルで複製されるため、関数が複数定義される可能性があります。プリプロセッサの仕事。この重複によりコンパイラが混乱し、エラーが発生します。
ヘッダーの組み込みの仕組み
ヘッダー ファイルを組み込むと、その内容が参照されるソース ファイルにコピーされます。次の例を考えてみましょう。
// main.cpp #include "foop.h" int main() { int x = 42; std::cout << x << std::endl; std::cout << foo(x) << std::endl; }
プリプロセッサがこのコードを処理すると、main.cpp は次のようになります。
// iostream stuff int foo(int a) { return ++a; } int main() { int x = 42; std::cout << x << std::endl; std::cout << foo(x) << std::endl; }
ご覧のとおり、foo() の実装は次のようになります。 main.cpp に直接。ただし、foop.cpp という名前の実装ファイルに foo() の定義も含まれている場合、コンパイラーは重複した定義を検出し、エラーを発生させます。
以上がC コードに実装ファイル (.cpp) ではなく、ヘッダー ファイル (.h) のみを含める必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。