1. ホーム
  2. c++

[解決済み] ヘッダーとC++ファイルをインクルードすることの違いは何ですか?

2022-02-15 11:28:05

質問

ヘッダー(.hファイル)とC++ファイル(.cppファイル)をインクルードすることの違いは何ですか?クラスを作成すると、.hファイルと.cppファイルが作成されます。このクラスのオブジェクトを使用したい場合、これらのファイルを両方ともインクルードするべきかどうか?また、どのような場合に.cppファイルをインクルードすべきでしょうか?

どのように解決するのですか?

ファイルの名前とその中身は、完全に慣習です。もしあなたが人々を混乱させることが好きなら、ヘッダーファイルを次のように呼ぶことができます。 something.b とソースファイル something.r - この場合、もちろんほとんどの人にとっては何の役にも立たないでしょうし、あなたのファイルにはC++のソースではなくR言語が入っていると思う人もいるかもしれません。というファイルにCやC++が含まれていることをエディタが理解することはないでしょう。 .b - といったビルドツールがあります。 Make , scons , CMake などは、どのようにコンパイルすればいいのか、言われなければわからないでしょう。[コンパイラはファイル名の拡張子も見て、C++としてコンパイルするのかCとしてコンパイルするのか判断します。]

重要なのは、ファイルの名前ではなく、実際に何が入っているかということです。ヘッダー(ほとんどの人が something.h 例外として、ヘッダーファイルはプロジェクト全体で1回以上含まれることを意図していないものもあります。 version.h これは、現在のバージョン番号を記述する文字列を宣言しています]。

ソースファイル(従来は something.cpp は、通常、コンパイラに直接渡してコンパイルさせるべきであり #include "something.cpp" . しかし、それを決定するのはCONTENTであり、ファイル名ではありません。そのような使い方をすると、ファイル名が悪いだけです。

要約すると、コンパイラは渡されたソースファイルを読み込んで、その後に #include を、あたかも元のソースファイルに貼り付けたかのように、コンパイルするコードの流れに追加します。コンパイラは、コンパイルが全体として "ok" である限り、ファイル名が何であるか、どこから来たか、その内容が何であるかは気にしないのです。