web-dev-qa-db-ja.com

最初に関連ヘッダーを含めるのはなぜですか?

C/C++にはファイルの順序/ベストプラクティスを含める という質問については、関連するヘッダーを最初に含めることをお勧めします。

Google および Mozilla スタイルガイドでも同じです。

ただし、どちらの場合も、これを行う理由を見つけることができませんでした。

GoogleとMozillaのコーディングルールは、最も「標準的な」ヘッダーを最初に含めるように強制するため、私には最適です。

このように、私はあなたが含まれるファイルを台無しにする可能性が低いと思います(例えば、他のヘッダーで使用されているいくつかのマクロを未定義にするなど)。

しかし、その根拠に続いて、なぜ関連するヘッダーを最初に含めるのでしょうか?構文エラーがあると、次のすべてのヘッダーが混乱する可能性がありますか?

代わりに、関連するヘッダーを最後に含めることをお勧めします。

27
Arnaud

クライアントがライブラリヘッダーを含めるときに、クライアントがあなたを嫌っていないことを確認するためです。

ヘッダーが壊れやすく、間違った包含順序で破損する可能性がある場合、最初ではないときに環境で機能しているように見えることがあります-ヘッダーを含めるためyo need-しかしクライアント用にコンパイルに失敗するコード。なぜなら、それが機能するために他のヘッダーを取り込む必要があるかどうかはまったく明らかではないからです。

現在の実装ファイルに対応するヘッダーを最初に含めると、ヘッダーが自己完結していることを確認します。自己完結型は、必要なヘッダーを含めるだけではありません。また、APIで使用する型に必要な前方宣言を追加する必要があります。当然、タイプのヘッダーを前に含めるとヘッダーがコンパイルされますが、APIのタイプ名のみに依存するため、ヘッダーをプルしたくない場合があります。

一部のスタイルガイドは前方宣言を禁止しているため、それらが提示する根拠の一部ではない場合があります。

40
StoryTeller

Cppファイルに関連するヘッダーを最初に含めることで、ヘッダーが自己完結型であり、コンパイルに他のインクルードを必要としないことが保証されます

15
Alan Birtles