C++ の複数のコード ファイル
このチュートリアルでは、単一の C++ プログラムで複数のファイルを使用する方法について説明します。 大きくて長いプロジェクトでは、すべてのコードを 1つのファイルに記述するのは面倒なので、プロジェクト内のファイルを分割して、管理しやすくリファクタリングしやすくする方法を学びます。
プログラミングのキャリアのこの時点まで、すべてのコードを 1つのファイルに記述してきました。 メイン関数、プロトタイプ、システム関数、追加関数など、すべてが含まれていました。
これは、(大規模な) プログラミング プロジェクトを組み立てる最良の方法ではありません。 プログラミング プロジェクトを複数のファイルに分割して、より整理され、安全で、移植性があり、変更可能で、再コンパイルが高速になる方法を学習します。
これには多くの理由がありますが、時間と情報が多すぎるため、詳細を説明することはできません.
C++ プログラムで複数のコード ファイルを使用する
すべてを 1つのファイルにまとめたサンプル ファイルから始めて、そのファイルを分離します。
コード例:
#include <iostream>
using namespace std;
void helloFunc();
int main() {
helloFunc();
return 0;
}
void helloFunc() { cout << "Hello World" << endl; }
このコード スニペットでは、最初に helloFunc()
関数を宣言し、プログラムの後の段階でそれを定義したことがわかります。 次に、main
関数を記述しました。
これは、3つのファイルで実行できます。 ヘッダー ファイルで関数を宣言し、cpp
ファイルで定義します。
コード例 (hello.h
):
#include <iostream>
using namespace std;
void helloFunc();
コード例 (hello.cpp
):
#include "hello.h"
void helloFunc() { cout << "Hello World" << endl; }
コード例 (main.cpp
):
#include "hello.h"
int main() {
helloFunc();
return 0;
}
ヘッダーファイル hello.h
から始めましょう。 ヘッダー ファイルには、関数の定義、struct
または class
の定義、定数の定義など、すべての定義が含まれています。
この .h
拡張子は、このファイルがコンパイルされないことをコンパイラーに伝えます。 これはテキスト ファイルのようなもので、誰でも読み取ることができます。 これは、ヘッダー ファイルがドキュメント ファイルであることを意味します。
プログラマーが将来いくつかの関数を使用したい場合、関数のプロトタイプを確認するだけでよく、関数定義について詳しく調べる必要はありません。 最後に、テンプレート コードもヘッダー ファイルに含める必要があります。
ここで、ヘッダー ファイルで宣言された関数定義を含む cpp
ファイルが作成されます。 CPP ファイルは、このファイルをコンパイルしてバイナリ ファイルに変換することをコンパイラに伝えます。
あなたのコードの完全性は保護されており、あなたの許可なしに他の人がコードを変更することはできません。 これは、このコードの分離により、コード ファイルのセキュリティも保証されることを意味します。
この手法の背後にあるもう 1つの理由は、移植性です。 たとえば、後で他の多くのプログラムで使用できるバイナリ検索コードを作成したとします。 これらの関数用の個別のファイルがあれば、そのような関数を他のプロジェクトで簡単に使用できます。
最後に、main
ファイルには main
関数のみが含まれ、先頭にヘッダー ファイルが含まれています。 このファイルには main
関数のみが含まれており、すべての関数を呼び出すだけで他には何もありません。
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn