ヘッダー ファイルのインクルードとソース コードの比較
C プログラムで複数のソース ファイルを扱う場合、ヘッダー ファイルのインクルードとソース コードの違いを理解することが重要ですファイル (.h) とソース コード ファイル (.cpp)。
この例では、インクルード時にエラーが発生しました。 main.cpp ファイル内の「foop.h」の代わりに「foop.cpp」。これは、ヘッダー ファイルが関数のプロトタイプやその他の必要な情報を宣言するために特別に設計されているのに対し、ソース コード ファイルには実際の関数実装が含まれているためです。
ヘッダー ファイルをインクルード
ヘッダーをインクルードするファイルを使用すると、コンパイラは、定義を重複させることなく、他のソース コード ファイルで定義された関数を見つけて認識できるようになります。 「foop.h」をインクルードすることにより、main.cpp ファイルは foo() 関数プロトタイプにアクセスできるようになり、完全な実装の詳細を知らなくてもプログラムがプロトタイプを呼び出すことができるようになります。
ソース コード ファイルを含む
対照的に、「foop.cpp」を直接インクルードすると、そのファイルのすべてのコードが main.cpp ファイルにコピーされ、多重定義エラーが発生します。 foo() は foop.cpp と main.cpp の両方で定義されているため、コンパイラはどちらの定義を使用するか混乱します。
仕組み
ヘッダー ファイルを作成すると、その内容が現在のソース コード ファイルに効果的にコピーされます。たとえば、「foop.h」を含めると、main.cpp に次の同等のコードが作成されます:
// Header file contents int foo(int a); int main(int argc, char *argv[]) { // Rest of the main.cpp code }
ただし、「foop.cpp」を含めると次のようになります:
// Source code file contents int foo(int a){ return ++a; } int main(int argc, char *argv[]) { // Rest of the main.cpp code }
結果
ソース コード ファイルを直接インクルードすると、次のような予期せぬ結果が生じる可能性があります。 as:
ベスト プラクティス
したがって、ファイルを参照するときは、ヘッダー ファイル (.h) をインクルードすることを常に推奨します。関数と宣言を分離し、ソース コードの実装を別のファイル (.cpp) に保持します。これにより、コードのモジュール性が確保され、エラーが回避され、コードの可読性が向上します。
以上がC に .h ファイルの代わりに .cpp ファイルを含めるとエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。