首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用stdafx.h?

如何正确使用stdafx.h?
EN

Stack Overflow用户
提问于 2011-08-26 08:24:15
回答 5查看 7.4K关注 0票数 15

在分离依赖关系方面,使用stdafx.h的正确方法是什么?

如果我把everything放在那里,那么我的编译就会很快,而我在任何文件中所要说的就是

代码语言:javascript
复制
#include "stdafx.h"

但请注意:

  1. I不再知道哪些文件依赖于哪些头文件。
  2. 降低了模块化,降低了代码的可重用性。
  3. I无法将C#include与C++ #include(例如cstringstring.h)区分开来,而无需付出很大的代价。(说到这一点,这还重要吗?)

如果我把 but 放进去,我可以很好地组织所有的东西--但是我的编译速度会急剧下降。

如果我将everything放在那里,都包含在我的各个文件中,那么我就能从这两个世界中得到最好的结果,但要注意的是,现在必须跟踪同步问题。

这个问题有什么众所周知的解决办法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-26 08:32:01

您不应该将您自己的头文件放在stdafx.h中,因为您的代码可能会更改,并且会导致您的整个程序重新编译。

我通常会把标准的头和其他库放在里面,比如所有的boost包含。

票数 17
EN

Stack Overflow用户

发布于 2011-08-26 08:31:05

在使用预编译头时,您应该确保您的项目在没有PCH存在的情况下也能干净地编译(因此将其视为优化,而不是每个TU中包含的替换)。除此之外,不要把所有的东西都放在里面(更重要的是,不要把你自己的项目的头-- PCH应该只包含那些很少改变或改变的东西--系统库、外部依赖项),而是尽量保持大多数使用的/最大的东西是预编译的。

票数 8
EN

Stack Overflow用户

发布于 2011-08-26 08:36:17

就我个人而言,我宁愿编译得慢,也不想知道依赖关系是怎样的(可见性)。然而,一切都是有限度的。

由于每个项目都有自己的预编译头文件,所以我只需将通用的所有内容放在其中。比方说,如果一个项目使用了一些boost标头,那么它们就很适合在那里使用,因为它们将被整个项目使用,并且您不会对它们进行更改。因此,在预编译的头(如系统或第三方的东西)中很少/从不更改头。

为了加快编译速度,我宁愿尽可能多地依赖于转发--声明事情,拆分成更小的库,并尝试以一种不影响其他许多代码重新编译的方式来组织事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7201904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档