2012-11-05 56 views
1

我想这是一个关于风格而不是正确性的问题。当使用预编译头文件时,我是否仍然在需要时包含头文件?

使用visual studio 2012我发现使用Windows.h,direct3d11,atlbase和任何标准C++头文件的预编译头文件的构建速度要比不使用它们快得多。该项目大量使用Windows,因此完全不需要将任何东西移植到此项目的其他操作系统或编译器中。

我的问题是我真的应该包括在#include "Precomp.h"后面使用的头文件。他们当然不会做任何事情,因为他们有标题守卫或#pragma一次,但他们会帮助记录依赖关系。

在.h文件中怎么样?我不能在那里包含预编译头文件,但为了使.h文件自包含,我总是包含例如如果它使用任何内容。但这是不必要的,因为包含该.h文件的.cpp文件将在使用该文件的.h文件之前包含“Precomp.h”文件,该文件将包含总是

所以这不是关于正确性,而是关于理解和可维护性的最佳风格。

在这种情况下,预编译头文件中的“最佳实践”是什么?

回答

1

经验法则很简单:只使用从不更改的标头。所以你只需要一次缓慢的编译,而不再一次。

这使得SDK和编译头成为一个简单的选择。你自己的标题,不是那么多。那么经验法则第二号适用:你有你自己的标题,应该#included 无处不在?他们是否真的足够大,能够产生明显的速度差异?无论如何,这几乎总是两次罢工。

+1

嗯,我只使用系统和编译器头的预编译头。问题是我是否在我自己的Test.h中包含了,因为它使用了它的某些东西,或者只是依赖包含Test.h在内的任何包括它在内的预编译头文件。通常自行制作.h文件是很好的做法,但在这种情况下,我知道*预编译的头文件将始终包含在内。 – jcoder

+0

对,所以不要。 –

相关问题