包括.cpp而不是标题(.h)

时间:2012-02-12 23:37:30

标签: c++ build header-files

在某些情况下,我们包含.cpp文件而不是标准头文件(.h),例如:

#include "example.cpp"

而不是

#include "example.h"

它似乎有用,但是这样安全还是我应该避免它?

编译时间怎么样?

4 个答案:

答案 0 :(得分:20)

这是懒惰的编码。使用头文件。是的,它们可以增加编译时间,但它们意味着您可以轻松地重新实现代码块,或者更好的是,其他开发人员可以随时使用。头文件用作C/C++代码将要执行的操作的模板。丢弃或忽略它是一个坏主意。

答案 1 :(得分:7)

我同意Kerrek SB。

我做过一次。我正在构建一个优秀的,广泛使用的压缩库,需要为8位图像和12位图像单独构建。我可以想出的最简单的方法是将它放到构建系统中(过度简化一点)有两个主.cpp文件,一个为8位构建设置#defines,另一个为12位构建。然后,主.cpp文件#included压缩库的源文件。

如果您足够了解规则以了解规则的原因以及为什么它可能不适用于您的情况,那么不遵循一般规则是可以的。 (但这些案件应该很少见。)

答案 2 :(得分:3)

#include "impl.cpp"有合法用途:

  1. 测试对静态/ etc变量的访问

  2. 如果c ++模板机制证明不充分(罕见)

    ,则会使用这些临时模板

    #define MACRO (...)

    #include "impl.cpp" // uses MACRO

  3. 请注意,#include "impl.cpp"可能不安全,因为相同的文件包含在稍后链接在一起的单独编译单元中。

答案 3 :(得分:1)

我之前使用过它并没有问题,但我不能确保这是安全的。有时这是我唯一的选择所以我用它,否则我会使用.h文件。