C/C++ インクルード ヘッダー ファイルの順序 [closed] 質問する

C/C++ インクルード ヘッダー ファイルの順序 [closed] 質問する

インクルード ファイルはどのような順序で指定する必要がありますか。つまり、あるヘッダーを別のヘッダーの前に含める理由は何ですか。

たとえば、システム ファイル、STL、Boost はローカル インクルード ファイルの前か後に配置されますか?

ベストアンサー1

コンパイルできれば、推奨される順序はないと思います。厄介なのは、一部のヘッダーで他のヘッダーを最初にインクルードする必要がある場合です... これは、インクルードの順序の問題ではなく、ヘッダー自体の問題です。

私の個人的な好みとしては、ローカルからグローバルへ、各サブセクションをアルファベット順に並べることです。つまり、

  1. この cpp ファイルに対応する h ファイル (該当する場合)
  2. 同じコンポーネントからのヘッダー、
  3. 他のコンポーネントからのヘッダー、
  4. システム ヘッダー。

1. の私の根拠は、各ヘッダー (cpp がある) が#include前提条件なしで実行できること (技術的に言えば、ヘッダーは「自己完結型」) を証明する必要があるということです。そして、残りはそこから論理的に流れるように見えます。

おすすめ記事