2017-10-30 5 views
1

多くのライブラリでは、2つのファイルに.Hファイルと.CPPファイルが含まれています。 .hは関数プロトタイプを含むヘッダーファイルで、.CPPはヘッダーファイル内のすべての関数の実際のC++コードを含んでいます。C++でのライブラリの作成

私は単一の.hファイルを作成して、すべてのC++関数とクラスを書き込むことができますか質問したいと思います。そして、.hファイルをmain.cppに必要なときに含めます。

+0

はい、できます。それは本当に必要なものによって決まります。 – DimChtz

+0

[ヘッダのみのライブラリのメリット]の可能な複製(https://stackoverflow.com/questions/12671383/benefits-of-header-only-libraries) – ilim

+0

'' inline' – doctorlove

答えて

6

はい、できます。これは、というヘッダー専用ライブラリと呼ばれることもあります。

もちろん、あなたの関数は同じプログラムのいくつかのCPPファイルに含まれている可能性があるので、それらをすべてインライン(あるいは内部リンケージ、静的または匿名の名前空間)にする必要があります。

これらのうちのいくつかは、優れたboostライブラリコレクションにあります。

0

私は単一の.hファイルを作成して、すべてのC++関数とクラスを書き込むことができますか質問したいと思います。そして、.hファイルをmain.cppに必要なときに含めてください。

はい、これを行うことができます。すべての定義をヘッダファイルにインライン展開することは可能です。
ヘッダーのみ(テンプレート)ライブラリがない限り、これは珍しいことですが。

定義を独自の翻訳単位に分割する理由の1つは、実装のいくつかの小さなビットが変更されたときに、すべての依存コードを再コンパイルする必要がないということです。

1

はいこれを行うことができます。コンパイル時にヘッダーのすべてのコードが "main.cpp"ファイルに貼り付けられます。宣言はヘッダーまたはhppにあり、実装はソースまたはcppで行われるのが標準です。ただし、ヘッダーにすべてを入れるだけで、コンパイル後に動作するヘッダーファイルを含めることができます。ヘッダ内のwhatsを "main.cpp"に宣言し、別のcppファイルに実装し、.hファイルを使用せずにコンパイルすると、#include "MyClass.hpp"と同じように動作します。 C++ヘッダーにはhpp、cヘッダーにはhを使用してください。

関連する問題