1

inclusions.hプロジェクトのすべての#include <...>s を 含むというヘッダー ファイルがあるとします。には、さまざまな定数を変更できるinclusions.hという別のヘッダー ファイルが含まれています。settings.h

の場合#include <math.h>、数学ライブラリinclusions.hsettings.hもアクセスできますか? それとも私も入る必要が#include <math.h>ありsettings.hますか?

4

3 に答える 3

5

math.h が settings.h の前に含まれている場合、settings.h も math.h にアクセスできる必要があります。しかし、確実にアクセスできるようにする (そして依存関係を示す) には、必要な場所にファイルを含める必要があります。

于 2010-11-19T14:21:33.450 に答える
3

インクルージョンの順序によって異なります。#includeテキスト置換によって単純に機能するプリプロセッサ ディレクティブです。したがって、inclusions.hあなたが持っている場合:

#include <math.h>
#include <settings.h>

設定は数学を「見ることができます」。あなたが持っている場合:

#include <settings.h>
#include <math.h>

できません。しかし、以前に含めsettings.hに他の場所で使用した場合はどうなりますか? したがって、最終的には、各インクルード ファイルを独立させるようにしてください。math.h

于 2010-11-19T14:24:44.673 に答える
1

この場合、他の人が指摘したように、含める順序によってはアクセスできる可能性があります。これは、これらのソース ファイルが 1 つの翻訳単位の一部であるためです (ソース + インクルードは本質的に<math.h>) "settings.h"。ただし、設定が別の翻訳単位の一部になった場合、または特定のインクルードを移動することにした場合は、変更される可能性があります。「安全」にするために、ファイルに必要なヘッダーファイルをそのファイルに含める必要があります。

于 2010-11-19T14:25:33.173 に答える