use*_*878 6 c++ coding-style header-files
我已经看到一个标题包含这样的样式,其中头文件不包含其他头文件,相应的*.cpp文件必须包含所有依赖项(并按正确的顺序包含它们).在过去的好日子里,这可能会使构建依赖性跟踪变得更容易(但我只是在猜测).现在有充好的理由吗?
档案"Bh":
#ifndef _B_h_
#define _B_h_
// Note we do not #include "A.h" that contains class A declaration.
class B
{
public:
A a; // An A object.
};
#endif // _B_h_
Run Code Online (Sandbox Code Playgroud)
文件"B.cpp":
#include "A.h" // Must include this before B.h, otherwise class A not defined in B.h
#include "B.h"
...
Run Code Online (Sandbox Code Playgroud)
是的,这将是不好的做法,因为如果某人得到错误的订单,他们将得到他们可能或可能无法弄清楚的错误.如果所有头文件都包含防护,那么包含所需的所有其他头的一个头将不会成为问题,这应该是怎样的.
似乎无论谁编写该代码都误解了减少包含标题数量的共同建议.通常建议删除不必要的 #include <>指令,以期加速编译.实际上,在大型项目中,它可能会通过以下方式显着加速编译:
一般来说,除非相关标题中定义的类是:否则人们会建议(使用我所参与的所有项目的编码标准)使用前向声明.
在情况1和2中,#include <>指令必须出现在所有相关源文件和标头中的类定义之前.基本上,它只是将#include <>指令从头部移动到每个依赖项中.它会产生更多的代码并且没有任何好处(例如编译时间等).出于这个原因,此建议还伴随着编码标准中的另一个条目:每个头文件应编译"独立"(例如,包括在源文件的第一行).
| 归档时间: |
|
| 查看次数: |
2166 次 |
| 最近记录: |