大型项目的C头策略(redux)
我已经阅读了我可以在这个主题上找到的一切,包括对这个网站的几个非常有帮助的讨论,NASA编码指南和Google C指南.我甚至买了这里推荐的“物理C设计”书(对不起,忘了名字),并得到了一些有用的想法.大多数来源似乎都同意 – 头文件应该是自包含的,即它们包括他们需要的,以便一个cpp文件可以包括头,而不包括任何其他的,它将编译.我也得到关于前进宣告而不是包含的可能性.
也就是说,如果foo.cpp包含了bar.h和qux.h,那么呢呢,原来吧吧吧本身就包含了qux.h?应该foo.cpp然后避免包括qux.h? Pro:清理foo.cpp(减少“噪音”). Con:如果有人将bar.h更改为不再包含qux.h,foo.cpp会神秘地开始无法编译.还会导致foo.cpp和qux.h之间的依赖关系不明显. 如果你的答案是“一个cpp文件,应该#include每个标题,它需要”,采取其逻辑结论,这意味着几乎每个cpp文件必须#include< string>< cstddef>等等,因为大多数代码将最终使用这些代码,如果您不应该依赖于其他头文件,那么您的cpp需要明确地包含它们.这似乎在cpp文件中有很多“噪音”. 思考? 以前的讨论: What are some techniques for limiting compilation dependencies in C++ projects? Your preferred C/C++ header policy for big projects? How do I automate finding unused #include directives? ETA:以前在这里的讨论启发,我已经写了一个Perl脚本来连续地排除每个“包含”和“使用”,然后尝试重新编译源文件,找出不需要的内容.我也想出了如何将它与VS 2005整合,所以你可以双击进入“未使用”的包括.如果有人想让它让我知道…现在非常实验. 解决方法
对.这就是我喜欢的方式. 如果“噪音”太大,可以有一个包含通常的常用的包含(包括许多Windows程序中的stdafx.h)的“全局”包含文件,并且包括在开始时每个.cpp文件(也有助于预编译头文件). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |