在分离依赖关系方面,使用stdafx.h的正确方法是什么?
如果我把everything放在那里,那么我的编译就会很快,而我在任何文件中所要说的就是
#include "stdafx.h"但请注意:
#include与C++ #include(例如cstring与string.h)区分开来,而无需付出很大的代价。(说到这一点,这还重要吗?)如果我把 but 放进去,我可以很好地组织所有的东西--但是我的编译速度会急剧下降。
如果我将everything放在那里,和都包含在我的各个文件中,那么我就能从这两个世界中得到最好的结果,但要注意的是,现在必须跟踪同步问题。
这个问题有什么众所周知的解决办法吗?
发布于 2011-08-26 08:32:01
您不应该将您自己的头文件放在stdafx.h中,因为您的代码可能会更改,并且会导致您的整个程序重新编译。
我通常会把标准的头和其他库放在里面,比如所有的boost包含。
发布于 2011-08-26 08:31:05
在使用预编译头时,您应该确保您的项目在没有PCH存在的情况下也能干净地编译(因此将其视为优化,而不是每个TU中包含的替换)。除此之外,不要把所有的东西都放在里面(更重要的是,不要把你自己的项目的头-- PCH应该只包含那些很少改变或改变的东西--系统库、外部依赖项),而是尽量保持大多数使用的/最大的东西是预编译的。
发布于 2011-08-26 08:36:17
就我个人而言,我宁愿编译得慢,也不想知道依赖关系是怎样的(可见性)。然而,一切都是有限度的。
由于每个项目都有自己的预编译头文件,所以我只需将通用的所有内容放在其中。比方说,如果一个项目使用了一些boost标头,那么它们就很适合在那里使用,因为它们将被整个项目使用,并且您不会对它们进行更改。因此,在预编译的头(如系统或第三方的东西)中很少/从不更改头。
为了加快编译速度,我宁愿尽可能多地依赖于转发--声明事情,拆分成更小的库,并尝试以一种不影响其他许多代码重新编译的方式来组织事情。
https://stackoverflow.com/questions/7201904
复制相似问题