我认为这是关于风格而不是正确性的问题。
使用visual studio 2012我发现使用windows.h,direct3d11,atlbase和任何标准c ++头文件的预编译头文件比使用它们时更快。该项目大量使用Windows,因此根本不需要任何可移植到该项目的其他操作系统或编译器的东西。
我的问题是,我还要包含#include "Precomp.h"
之后使用的头文件。他们当然不会做任何事情,因为他们有标题保护或#pragma一次,但他们将帮助记录依赖。
.h文件怎么样?我不能在那里包含预编译的头文件,但是为了使.h文件自包含,我总是包括例如它是否使用了那里的任何东西。但这是不必要的,因为包含此.h文件的.cpp文件将始终在使用它的.h文件之前包含“Precomp.h”文件。
所以这不是关于正确性,而是关于什么是理解和可维护性的最佳风格。
在这种情况下,预编译头文件的“最佳实践”是什么?
答案 0 :(得分:1)
经验法则非常简单:只使用从不更改的标题。因此,您只能进行一次慢速编译,而不会再次进行编译。
这使得SDK和编译器标头成为一个简单的选择。你自己的标题,而不是。然后经验法则第二号适用:你有自己的标题应该#included 到处吗?它们实际上是否足以产生明显的速度差异?无论如何,这几乎总是两次打击,希望无论如何。