Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 包含.cpp而不是标头(.h)_C++_Build_Header Files - Fatal编程技术网

C++ 包含.cpp而不是标头(.h)

C++ 包含.cpp而不是标头(.h),c++,build,header-files,C++,Build,Header Files,在某些情况下,我们包含.cpp文件而不是标准头文件(.h),例如: #include "example.cpp" 而不是 #include "example.h" 这似乎有效,但这是安全的还是我应该避免它 编译时间呢?我以前用过,没有问题,但我不能保证这是安全的。有时这是我唯一的选择,所以我使用它,否则我将使用.h文件 这是惰性编码。使用头文件。是的,它们可以增加编译时间,但它们意味着您可以轻松地重新实现代码块,或者更好的是,其他开发人员可以随时重新实现代码块。头文件用作C/C++代码的模板

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

#include "example.cpp"
而不是

#include "example.h"
这似乎有效,但这是安全的还是我应该避免它


编译时间呢?

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

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

有合法的
用途,包括“impl.cpp”

  • 访问静态/etc变量的测试

  • > P模板,如C++模板机制证明不足(罕见)

    #定义宏(…)

    #包括“impl.cpp”//uses宏


    请注意,如果同一个文件包含在单独的编译单元中,以后链接在一起,则包含“impl.cpp”可能不安全。

    我同意Kerrek SB的观点

    我做过一次。我正在构建一个优秀的、广泛使用的压缩库,它需要为8位图像和12位图像分别构建。我能想到的将其纳入构建系统的最简洁的方法是(过于简单化了一点)有两个master.cpp文件,一个为8位构建设置#定义,另一个为12位构建设置#定义。然后master.cpp文件包含压缩库的源文件


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

    你怎么做就怎么做。一般来说,这是不必要的。编程不是盲目地跟随某架货机,而是了解你在做什么,并在理解和推理的基础上做出决定。我所见过的唯一有效的理由是节省连接时间@西索普:正如我所说的:首先要理解你在做什么,问什么。包含由预处理器处理,远远早于任何编译。理解预处理器,你就会知道什么时候可以包含东西。总有另一个选择,也就是说,永远不要说不。我总是使用.h,但我们在这里有很多争论,这就是为什么我要问。@sysop——公平地说,“它是惰性编码”有点夸张。在某些情况下,它实际上可能是正确的,但在一般情况下,我认为它的形式很差。包括
    .h
    文件而不是
    .cpp
    文件可以大大加快编译时间,因为它允许您进行部分重新编译。