为什么在.cpp中包含<.hpp>,而不是在.hpp中包含<.cpp>?

这个问题在这里已经有了答案:

  • 编译/链接过程如何工作? 5个答案
  • 为什么有头文件和.cpp文件? [已完成] 9个答案

  • 如果预处理表单(在预处理之后)是有效的C ++,您可以在C ++翻译单元中#include任意文件(您正在编译的*.cpp )。 阅读有关预处理器和C预处理器wikipage的一些文档。 不要忘记,预处理是C或C ++编译器的第一阶段。 (从历史上看,它甚至是一个不同的进程/lib/cpp ;现在它出于性能原因在编译器内部)。

    包含文件的名称并不重要。 通常,您不想将包含的文件命名为顶级翻译单元。 这就是为什么人们通常不会#include "example.cpp"但是像#include "example.inc"#include "example-inc.cpp" (或#include "example.def" ,特别是如果#include几次头)。 例如,标准C ++库接受#include <map>

    例如,请参阅此答案,其中显示某些包含文件,其中#include -d多次(用于不同的目的),或者在GCC源代码树内包含文件gcc/tree.def

    当然,你不能#include多次在同一编译单元的任意C ++文件(因为你不能有例如,相同功能的几个定义)。

    在实践中,使用例如g++ -C -E foo.cc > foo.ii来获得预处理的翻译单元foo.cc ...然后用寻呼机或编辑器查看预处理的格式foo.ii

    还请阅读关于C ++模块的一些建议。 它在最新的C ++标准中没有被接受,但类似的东西在未来可能会变得标准化。

    链接地址: http://www.djcxy.com/p/73299.html

    上一篇: Why #include<.hpp> in .cpp, not <.cpp> in .hpp?

    下一篇: prefixed string literals concatenated with prefixed ones?