预编译头文件 - 从所有其他文件中删除所有预编译头文件所必需的

时间:2017-09-26 09:14:12

标签: c++ visual-studio precompiled-headers

我有一个非常大的项目,为了编译速度,我开始测试预编译的头文件。

我现在已经设置了所有内容:

  • 在VS中启用预编译头文件(将它们用于项目,仅为StdAfx.h创建)
  • StdAfx.h
  • 以外的所有人使用多处理器编译
  • 通过强制包含VS
  • 自动在我的所有文件中加入StdAfx.h

现在出现的问题如下:

我是否需要删除已添加到StdAfx.h文件中的所有项目文件的所有内容,或者这是不必要的?编译器是否会自动跳过任何包含,因为他知道它是StdAfx.h的一部分,还是应该手动从每个.h / .cpp文件中删除它们?

1 个答案:

答案 0 :(得分:1)

好的做法是让每个文件都包含此文件直接需要的所有标题。这种方式改变包括特别是文件应该只影响这个文件。如果你开始依赖包含在其他地方的标题,它将使你的项目结构非常脆弱。单个“常见包含”文件是这种情况的极端情况。使用预编译的头文件应该通过预先构建通常包含的头文件来加速编译,但是项目文件永远不应该假设某些东西已经包含在那里。因此,不需要从“.h / .cpp”中删除包含,实际上有一些工具将根据项目文件中的包括填充预编译的头。由于标题保护,编译器将跳过已包含在预编译头文件(或其他标头)中的文件。