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"。ただし、設定が別の翻訳単位の一部になった場合、または特定のインクルードを移動することにした場合は、変更される可能性があります。「安全」にするために、ファイルに必要なヘッダーファイルをそのファイルに含める必要があります。