インクルード ファイルはどのような順序で指定する必要がありますか。つまり、あるヘッダーを別のヘッダーの前に含める理由は何ですか。
たとえば、システム ファイル、STL、Boost はローカル インクルード ファイルの前か後に配置されますか?
ベストアンサー1
コンパイルできれば、推奨される順序はないと思います。厄介なのは、一部のヘッダーで他のヘッダーを最初にインクルードする必要がある場合です... これは、インクルードの順序の問題ではなく、ヘッダー自体の問題です。
私の個人的な好みとしては、ローカルからグローバルへ、各サブセクションをアルファベット順に並べることです。つまり、
- この cpp ファイルに対応する h ファイル (該当する場合)
- 同じコンポーネントからのヘッダー、
- 他のコンポーネントからのヘッダー、
- システム ヘッダー。
1. の私の根拠は、各ヘッダー (cpp がある) が#include
前提条件なしで実行できること (技術的に言えば、ヘッダーは「自己完結型」) を証明する必要があるということです。そして、残りはそこから論理的に流れるように見えます。