在包含标题时,我有一个关于"最佳实践"的问题.
显然包含防护保护我们不要在头文件或源文件中包含多个包含,所以我的问题是你是否觉得#include包含头文件或源文件中所有必需的头文件是有益的,即使其中一个头部已包含一个其他包括.这样做的原因是读者可以看到文件所需的一切,而不是寻找其他标题.
例如:假设使用了防护装置:
// Header titled foo.h
#include "blah.h"
//....
Run Code Online (Sandbox Code Playgroud)
.
// Header titled bar.h that needs blah.h and foo.h
#include "foo.h"
#include "blah.h" // Unnecessary, but tells reader that bar needs blah
Run Code Online (Sandbox Code Playgroud)
此外,如果头文件中不需要标题,但是在相关的源文件中需要标题,是否将它放在标题或源文件中?
Bet*_*eta 10
在你的例子中,是的,bar.h应该#include blah.h. 这样一来,如果有人修改了foo以便它不需要等等,那么改变就不会破坏吧.
如果在foo.c中需要blah.h但在foo.h中不需要,那么它在foo.h中不应该是#included.许多其他文件可能#include foo.h,更多文件可能#include 它们.如果你在foo.h中#include blah.h,那么你就会使所有这些文件不必要地依赖于blah.h. 不必要的依赖会引起很多麻烦: