「.h」だけでなく、C++ヘッダーファイルの拡張子として「.hh」を使用する理由を教えてください。
ヘッダーファイルは前処理され、プリプロセッサーはヘッダーファイルの拡張子についてさえ気にしません。したがって、拡張子「.qwe」(test.qwe)のヘッダーファイルを作成しても、次に、C++ヘッダーファイルの拡張子として「.hh」を使用する理由。
C++ファイルの拡張子として ".cc"を使用してCファイル(拡張子 ".c"を持つ)と区別していると言う人もいます。同様に、C++ヘッダーファイルの拡張子として ".hh"を使用してCと区別していますヘッダーファイル(拡張子 ".h")。これは正当な理由ではないと思います。
誰かがそのように命名する理由を知っていますか?
C++ファイルの拡張子として「.cc」を使用して、Cファイル(拡張子「.c」を持つ)と区別していると言う人もいます同様に、C++ヘッダーファイルの拡張子として「.hh」を使用しています) Cヘッダーファイル(拡張子 ".h"を持つ)と区別するため。
それがまさに理由です。 CPPヘッダーとCヘッダーを区別するだけです。
Boostなどの一部のプログラマーおよびライブラリーは、CPPヘッダーに.hpp
を使用します。私の個人的な選択はこれです:
それらがすべて巨大なプロジェクトに属している場合でも、どれがどれであるかをまだ理解できます。説明は必要ありません。
ヘッダーには任意の名前を付けることができます。ヘッダーに拡張子を付けることもできません。
このFAQ はヘッダーの命名規則に言及しています。
これは特定の理由ではなく、単なる(開発者またはプロジェクト固有の)規約です。 「ファイル拡張子」は名前の一部にすぎないため、ソースファイルはプレーンテキストファイルであるため、それほど重要ではありません。さらに、ヘッダーファイルは、それらを含むファイルにコピー貼り付けされるだけです(#include
を使用)。そのため、ファイル拡張子の意味はさらに小さくなります。
ボーランドのライブラリのヘッダーには.hpp
拡張子が付いていました。 C++の標準ライブラリヘッダーには拡張子がまったくありません。それは慣習と個人的な好みの問題です。
これは完全に慣習であり、特別な理由はありません。通常、人々はプロジェクト全体、またはチーム全体、あるいは会社全体でさえ一貫性を保つように努めます。これは、あなたがabc.hhがファイルabc.ccに対応し、abc.hがabc.cに対応することを理解してから、コードを取得する開発者を支援します。
理由の1つは、C++コードの束の周りにC APIを持つdllを作成する場合、クライアントがC関数をインポートするために使用するCヘッダーと、明示的に使用しない内部C++ヘッダーを区別する必要があることです。クライアントにインポートを許可したい。
C関数へのバインドは、ほとんどオーバーヘッドがなく、ほとんどの言語/環境で非常に簡単です。 C++で継承されるすべての複雑さについて考える必要はありません。そのため、このようなライブラリを使用する場合は、C++をCインターフェイスから分離する必要があります。
それは主に社会的な慣習だと思います。
ただし、最近のGCCコンパイラーは、(単一の)ヘッダーfoo.hh
またはfoo.h
をfoo.hh.gch
またはfoo.h.gch
のようなものにコンパイルして、本質的にコンパイラーの永続的なメモリヒープイメージを含めることができます。 (cc1plus
によって開始されたg++
プログラムは、そのヘッダーを解析した後)。
C++ 11標準ライブラリがヘッダーファイルを定義していることに注意してください。 <vector>
拡張子なし。