首页 > 解决方案 > 在 C 项目中使用“伞形”标头有什么缺点?

问题描述

我在一个 C 项目中看到了一个有趣的模式:他们在组件本身的任何地方都使用了一个伞头(一个包含来自组件的所有内容的标题)。

伞.h:

#include "component_file1.h"
#include "component_file2.h"
/* #include each and every header of the component */ 

组件文件1.h:

#include "umbrella.h"
/*include guard and header*/

组件文件1.c:

#include "umbrella.h"
/*c code*/

其他文件中的模式相同。我得到的解释是:

  1. 编译时间在那个项目中并不重要
  2. 它易于使用(无需了解标题层次结构)

一个额外的技术细节:在伞形.h中,他们对包含指令进行排序以解决内部依赖关系(例如,如果component_file_2.h使用component_file_1.h,他们的顺序是:首先是component_file_1.h,然后是component_file_2.h)

除了编译时间之外,这种方法是否有任何严重的缺点会反作用于它的使用?根据什么标准可以证明使用这种方法的代码重构是合理的?

标签: cinclude

解决方案


推荐阅读