Doom 3项目文件包括

时间:2013-01-21 02:31:55

标签: windows visual-studio include include-path

我正在清理代码,并希望从一些源文件中最小化#includes。

我一直在查看id Softwares Doom 3源代码,并注意到许多文件不包含任何内容,但仍然可以访问其他文件中定义的#defines。

例如,Timer.h没有#includes,因此有权访问ID_INLINE宏。

我比较了.sln,.vcxproj,.vcxproj.filters,.props文件,我几乎与他们相同(减去文件数,文件名等)。

有没有人对如何完成这样的事情有任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

头文件不是自己编译的;它们被#include到.cpp文件中,并且.cpp文件被编译。因此,头文件X可以引用在其他头文件Y(不包括X)中定义的宏,以及Y和{ {1}}被包含(按特定顺序)到某个源(.cpp)文件中,然后所有引用都会有效。

在您的情况下,几乎可以肯定的是,在引用诸如X之类的宏之前,文件sys/sys_public.h最终会被#include包含在每个文件中。实际上,如果你四处寻找,你会看到ID_INLINE #include来自sys_public.h,这是许多.cpp文件中包含的第一个头文件。