为什么在.cpp中包含<.hpp>,而不是在.hpp中包含<.cpp>?
这个问题在这里已经有了答案:
如果预处理表单(在预处理之后)是有效的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?