我的c ++程序使用单独的头文件(我们称之为myHeader.h
),因此包含它(#include "myHeader.h"
)。在我的程序中,我需要使用另一个头文件(让我们称之为another.h
)。我将#include "another.h"
指令放在cpp文件中还是放在myHeader.h
中会有所不同吗?
答案 0 :(得分:14)
如果.h
文件中没有使用它,那么编译成功/失败就没有区别。
但是,建议在.cpp
文件的实现中放置仅包含头文件的包含,原因如下:
A.h
中加入文件B.h
也会使包含B.h
的任何文件包含A.h
。这可能会在看似无关的文件之间造成严重的依赖性问题。答案 1 :(得分:7)
如果您只需要在cpp文件中包含标题,则应将其包含在cpp文件中。
如果将其包含在标题中,则会为包含标题的所有其他人添加不需要的依赖项。如果您包含的不需要的标头还包含其他不需要的标头,则可能会爆炸。
答案 2 :(得分:5)
你的问题的答案是“不”。但是,您应该尽量避免在.h文件中生成不必要的include语句,因为这会导致更长的构建时间。它也适用于封装原因。
答案 3 :(得分:1)
假设你所有的包括守卫等等,那么没有。
最好考虑用户如何使用代码并尝试避免意外。
一般情况下,您应该避免使用包含在其他包含文件中的包含文件的复杂树 - 尽管现代编译器上的预编译头文件有帮助。
但是你还应该确保你拥有所有高级声明,以便cpp文件中包含的顺序无关紧要。
答案 4 :(得分:0)
真的没什么区别。头文件和cpp文件都可以包含其他文件。包含的文件有效地复制到文本流中。
答案 5 :(得分:0)
有一点不同 - 每次你的h文件都被包含在内,那个h文件中包含的任何文件都被包含在内 - 我还没有与现代C ++编译器保持同步,但这曾经真正增加了编译时间。
它还增加了源的物理依赖性 - John Lakos'Large Scale C++ Software Design解决了这个问题,非常值得阅读构建c ++程序。它发表于1996年,所以它并非基于现行做法,但对结构的建议值得了解。