已经讨论过类似的问题(C/C++ include header file order),但是该线程没有提及前向声明。如果我总结到目前为止我在网上阅读的内容:
每个人都同意.cpp文件的相应标头应放在首位。这样可以确保头文件具有所需的一切。
除此之外,似乎没有达成共识。 Google准则(https://google.github.io/styleguide/cppguide.html)建议包含系统->其他库->项目的标头。 SO上的许多人都提出了完全相反的建议。这似乎是个人喜好问题。
关于前向声明,是否有任何理由在include标头之前/之后添加它们?我不明白为什么这么重要(Is a class declaration allowed after a class definition?),但也许我缺少了一些东西。
答案 0 :(得分:1)
我认为这是没有一个正确答案的那些问题之一。
我对它的看法(绝不是绝对的答案)是从封装的角度来看的,出于这个原因,我倾向于做与Google指南相反的事情:
如果您首先包含项目标头,那么您遇到的问题就不那么容易了,因为您的标头依赖之前的某些系统包含,因为您只会遇到编译错误...因此,我发现您看到了问题通过将系统包括“ last”(最后)放置起来,速度更快。
与前向声明相同的内容-如果需要它们,并且它们不是由标头提供的,则将它们添加在包含之后,因为标头不需要它们(否则它将在标头中)等等您只在需要时才声明为...
这大概是我的推理-但正如我所说,如果您的标头设计正确,那么您可以采用任何一种方式...