相关疑难解决方法(0)

如何在大型C++项目中检测不必要的#include文件?

我正在研究Visual Studio 2008中的一个大型C++项目,并且有很多文件带有不必要的#include指令.有时#includes只是工件,一切都会被删除,但是在其他情况下,类可以向前声明,#include可以移动到.cpp文件中.是否有任何好的工具可以检测这两种情况?

c++ dependencies header include visual-studio-2008

95
推荐指数
7
解决办法
3万
查看次数

大型项目的C++头策略(redux)

我已经阅读了有关此主题的所有内容,包括本网站上的一些非常有用的讨论,NASA编码指南和Google C++指南.我甚至买了这里推荐的"物理C++设计"书(对不起,忘记了名字)并从中得到了一些有用的想法.大多数消息来源似乎都同意 - 头文件应该是自包含的,即它们包含他们需要的内容,以便cpp文件可以包含头而不包括任何其他文件并且它将编译.我也得到关于前方声明的观点,而不是尽可能包括在内.

那说,如果foo.cpp包括bar.hqux.h,但事实证明它bar.h本身包括qux.h?那么应该foo.cpp避免包括qux.h?亲:清理foo.cpp(减少"噪音").Con:如果有人将bar.h更改为不再包含qux.h,则foo.cpp神秘地开始无法编译.也导致依赖关系,foo.cppqux.h不是显而易见的.

如果您的答案是"cpp文件应该#include它需要的每个标题",那么就会得出它的逻辑结论,这意味着几乎每个cpp文件都必须#include <string>, <cstddef>等等,因为大多数代码最终会使用它们,如果你不是应该依赖包括它们在内的其他一些标题,你的cpp需要明确地包含它们.这似乎是cpp文件中的很多"噪音".

思考?

以前的讨论:

有哪些技术可以限制C++项目中的编译依赖性?

您对大项目的首选C/C++标头策略?

如何自动查找未使用的#include指令?

ETA:受到此前讨论的启发,我编写了一个Perl脚本来连续注释掉每个'include'和'using',然后尝试重新编译源文件,找出不需要的东西.我还想出了如何将它与VS 2005集成,因此您可以双击以转到"未使用"包含.如果有人想要它让我知道......现在非常实验.

c++ header include

10
推荐指数
1
解决办法
1470
查看次数

标签 统计

c++ ×2

header ×2

include ×2

dependencies ×1

visual-studio-2008 ×1