【问题标题】:Doom 3 Project file includesDoom 3 项目文件包括
【发布时间】:2013-01-21 02:31:54
【问题描述】:
我正在清理代码并希望从一些源文件中最小化#includes。
我一直在查看 id Softwares Doom 3 源代码,并注意到许多文件不包含任何内容,但仍然可以访问其他文件中定义的#defines。
例如,Timer.h 没有 #includes,所以还没有访问 ID_INLINE 宏。
我比较了 .sln、.vcxproj、.vcxproj.filters、.props 文件,我与他们的文件几乎相同(减去文件数、文件名等)。
有人对如何完成这样的事情有任何想法吗?
谢谢!
【问题讨论】:
标签:
windows
visual-studio
include
include-path
【解决方案1】:
头文件不是自己编译的;它们#included 到 .cpp 文件中,并且 .cpp 文件被编译。因此,头文件X 可以引用在其他头文件Y(不包括X)中定义的宏,并且当Y 和X 都包含时(在那个特定的order) 到某个源 (.cpp) 文件中,然后所有的引用都会起作用。
在您的情况下,几乎可以肯定发生的事情是文件sys/sys_public.h 最终#included 在每个文件中,然后引用ID_INLINE 之类的宏。事实上,如果你用 grep 搜索,你会发现 sys_public.h 是从 precompiled.h 中#included 的,这是许多 .cpp 文件中包含的第一个头文件。