inclusions.h
プロジェクトのすべての#include <...>
s を 含むというヘッダー ファイルがあるとします。には、さまざまな定数を変更できるinclusions.h
という別のヘッダー ファイルが含まれています。settings.h
の場合#include <math.h>
、数学ライブラリinclusions.h
にsettings.h
もアクセスできますか? それとも私も入る必要が#include <math.h>
ありsettings.h
ますか?
inclusions.h
プロジェクトのすべての#include <...>
s を 含むというヘッダー ファイルがあるとします。には、さまざまな定数を変更できるinclusions.h
という別のヘッダー ファイルが含まれています。settings.h
の場合#include <math.h>
、数学ライブラリinclusions.h
にsettings.h
もアクセスできますか? それとも私も入る必要が#include <math.h>
ありsettings.h
ますか?
math.h が settings.h の前に含まれている場合、settings.h も math.h にアクセスできる必要があります。しかし、確実にアクセスできるようにする (そして依存関係を示す) には、必要な場所にファイルを含める必要があります。
インクルージョンの順序によって異なります。#include
テキスト置換によって単純に機能するプリプロセッサ ディレクティブです。したがって、inclusions.h
あなたが持っている場合:
#include <math.h>
#include <settings.h>
設定は数学を「見ることができます」。あなたが持っている場合:
#include <settings.h>
#include <math.h>
できません。しかし、以前に含めずsettings.h
に他の場所で使用した場合はどうなりますか? したがって、最終的には、各インクルード ファイルを独立させるようにしてください。math.h
この場合、他の人が指摘したように、含める順序によってはアクセスできる可能性があります。これは、これらのソース ファイルが 1 つの翻訳単位の一部であるためです (ソース + インクルードは本質的に<math.h>
) "settings.h"
。ただし、設定が別の翻訳単位の一部になった場合、または特定のインクルードを移動することにした場合は、変更される可能性があります。「安全」にするために、ファイルに必要なヘッダーファイルをそのファイルに含める必要があります。