2010-08-28 92 views
1

我想加快我的C++项目的编译时间,我想知道如果我目前的结构可能会导致不必要的重新编译。C++单头文件结构

我有* .cc和相应的* .h文件,但是我所有的* .cc文件都包含一个单独的头文件main.h。

在main.h中,我包含了所有必需的和extern全局变量并声明了我使用的函数。基本上,我没有使用任何命名空间。

这是一个糟糕的设计,可能导致不必要的重新编译和缓慢的构建?

回答

3

这取决于。如果main.h很少修改,那么可以使用预编译头文件,这将大大缩短编译时间。另一方面,如果经常使用main.h,它可能不是一个好的设计。

将所有内容放在一个包含文件中引入的另一个问题是,它不会真正在应用程序中促进结构。在精心设计的应用程序中,您通常会有一个分层结构。通过将所有内容放入一个包含文件中,可以在应用程序中混淆结构。这可能适用于一个小应用程序,但如果您的应用程序增长,您将有一天完成一个完整的意大利细面条,其中一切都取决于其他一切。

尝试将包含文件拆分为多个部分。通常,每个类将有一个.cpp和一个.h文件。尽可能在包含文件中使用前向声明,并且只包含(在.h和.cpp中)真正需要的内容。

0

这样的设计肯定会导致构建时间变慢。当你开始构建文件和IDE时,它们会检查自上次编译以来哪些源(cc)文件已被修改。它还检查源文件取决于的任何文件是否已被修改。源文件取决于它包含的所有头文件,以及这些头文件包含的所有头文件等。如果它检测到任何修改,则重新编译该源文件。

由于您的设置意味着每个源文件都包含每个单独的头文件,所以无论何时修改单个头文件,您都需要重新编译每个源文件。

你一定想尝试分离一些东西,摆脱你的main.h文件。顺便说一下,通常人们会尽量减少包含在头文件中的头文件的数量,并希望将源文件中的头文件保留下来。