ホームページ >バックエンド開発 >C++ >C の .h ファイルをインクルードするように .cpp ファイルをインクルードできないのはなぜですか?

C の .h ファイルをインクルードするように .cpp ファイルをインクルードできないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-29 19:39:11685ブラウズ

Why Can't I Include .cpp Files Like I Include .h Files in C  ?

.h および .cpp ファイルの組み込み: 違いを理解する

C 開発では、他のファイルをソース コードに組み込むことが重要です。ただし、ヘッダー (.h) ファイルと実装 (.cpp) ファイルを含めるには、ある程度の理解が必要です。

次のコードを考えてみましょう。

main.cpp
#include <iostream>
#include "foop.h"  // Including the header file

int main() {
  int x = 42;
  std::cout << x << std::endl;
  std::cout << foo(x) << std::endl;
  return 0;
}
foop.h
#ifndef FOOP_H
#define FOOP_H

int foo(int a);  // Declaring the function prototype

#endif
foop.cpp
#include "foop.h"  // Including the header file, just for safety

int foo(int a) {
  return ++a;
}

このコードmain.cpp と main.cpp の両方にヘッダー ファイル (「foop.h」) がインクルードされているため、正常にコンパイルされます。 foop.cpp.

なぜ .cpp ファイルをインクルードしないのでしょうか?

では、次の "#include "foop.h"" 行を置き換えるとどうなるかを見てみましょう。 main.cpp と "#include "foop.cpp":

main.cpp
#include <iostream>
#include "foop.cpp"  // Including the implementation file

これにより、コンパイラが実行されますこの例では、関数 "foo" が 2 回 (main.cpp で 1 回、foop.cpp で 1 回) 定義されるためです。

結論

したがって、次の内容を含めることが重要です。コード定義の重複を避けるために、プライマリ ソース ファイルと、宣言された関数を使用する追加のソース ファイルの両方のヘッダ ファイル (.h) は、1 つのソース ファイルにのみ含める必要があります。

以上がC の .h ファイルをインクルードするように .cpp ファイルをインクルードできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。