相互包含头文件

时间:2010-11-19 14:18:07

标签: c++ xcode header-files inclusion

假设我有一个名为inclusions.h的头文件,其中包含我项目的所有#include <...>个。 inclusions.h包含另一个名为settings.h的头文件,其中可以修改各种常量。

如果#include <math.h>中的inclusions.hsettings.h是否也可以访问数学库?或者我也需要#include <math.h>中的settings.h

3 个答案:

答案 0 :(得分:5)

如果在settings.h之前包含math.h,则settings.h也应该可以访问math.h.但是为了确保访问(并指示依赖关系),您应该将文件包含在需要它们的位置,所以也在math.h中。

答案 1 :(得分:3)

这取决于夹杂物的顺序。 #include是一个预处理程序指令,只需通过文本替换即可。所以,如果在inclusions.h你有:

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

设置“可以看到”数学。如果你有:

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

它不能。但是:如果您之前使用settings.h其他而不使用包括math.h,会发生什么?所以最后,尝试使每个包含文件独立。

答案 2 :(得分:1)

在这种情况下,正如其他人所指出的那样,根据包含的顺序,它可以被访问。这是因为这些源文件是一个翻译单元的一部分(源+基本上包括)所以如果<math.h>出现在"settings.h"之前,它可以被它查看。但是,如果设置成为另一个翻译单元的一部分,或者如果您决定移动某些包含可能会改变的内容。为了“安全”,您应该只包含文件在该文件中所需的任何头文件。