1
15
我只包含每个源中真正需要的头文件,而不是“全部捕获”头文件,以尽可能减少依赖项(以及编译时间)。 不管怎样,预编译头都可以工作(即,我依赖预编译头来加快编译过程,而不是获取声明)。因此,即使通过包含的预编译头声明了某些内容,我仍然包含“常规”头,它将被包含保护机制跳过,并且不会向编译时间添加任何重要内容。 因为预编译头是编译器特有的东西。在我看来,优化/更改预编译头不应影响代码的正确运行。 具有尽可能低的依赖性的主要优点是重构变得更容易(或者更确切地说:可行) 关于这一切的好书 Large Scale C++ Design from Lakos |
2
2
我要做的是在我的单曲中包含整个项目中需要的所有STL头文件 precompiled header 通常是默认的stdafx.h。预编译头实际上是在项目中首先要设置的内容,包括所有stl-/boost-/platform头和第三方库。 stl&boost整齐地排列在名称空间中,因此它们也不会导致任何混淆或重叠。 在头文件中,我通常使用全名,但在源文件中使用 使用命名空间X 在适当的时候。 |
3
2
您可以将这两种方法结合起来: 将这两个.cpp文件都包含在内,并将其添加到stdafx.h中。这仍将为您提供PCH优化。 .cpp文件仍然需要包含“stdafx.h”,因此其独立性存在争议。但是,依赖关系是明确的状态,移除stdafx.h include比查找所有缺少的include简单。另外,标准的报头——所有报头都应该——确保它们不会包括两次。 通常,我同意您使每个文件“独立”的方法,即当将.cpp添加到另一个项目或包含.h时,它会处理其依赖关系。 记住,PCH是一种权衡,它们可能会变得巨大。在PCH中不得不使用大部分未使用的代码实际上会降低构建速度。不过,快速磁盘有很大帮助:) 另外,请注意,至少在某些版本中启用MSVC中的预编译头实际上会改变处理过程:在include“stdafx.h”之前的声明将被忽略,因此这需要是第一条非注释语句。丑陋的陷阱 |
4
1
完全同意John Lakos的书《大规模C++设计》的建议。 声明文件本身中文件(无论是.h还是.cpp)所需的所有头。不要依赖其他头文件包含的文件的副作用。 拥有一个大的头文件清单,所有的包括增加了不必要的依赖性,使设计非常脆弱。 哦,还有一件事就是头文件中永远没有using声明。只在实现文件.cpp文件中使用它们。 Hth. 干杯, 抢劫 |
Julia · 矢量中相加为总和S的值的数量 1 年前 |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 2 年前 |
quantumwell · 将空向量放入std::map() 6 年前 |
OutOfBound · 对未初始化内存使用算法的优点 6 年前 |
DarthRubik · 在使用列表删除之后,迭代器如何不无效 6 年前 |