是否有在项目中重新组织 C 头文件的首选方法?

问题描述 投票:0回答:0

我得到了一个中等规模但复杂的 C 项目(总共约 200,000 行),其中包含大约 100 个 .h 文件和几乎同样多的 .c 文件。

许多 .h 文件对应于等效的 .c 文件,但有一个特别的 .h 文件,我们称之为 project_common.h,它 #include 许多其他 .h 文件,并包含大约 2000 行,其中大部分内容是结构体和枚举定义等。许多结构体都是严重嵌套的,因此它们的顺序非常重要。

文件结构大致为:

#include guard

#include <assert.h>
#include <stdint.h>
/* etc */



#include "project_aaa.h"
#include "project_bbb.h"
/* Then another 30 or so lines like this. These are in alphabetical
order and a certain amount of effort has been made that they can be
included in any order. */


/* Then about 2000 lines of struct, enums, function definitions etc. */

我的任务是移动 2000 行中的大部分或全部,并为它们创建新的 .h 文件或将它们粘贴到现有的 .h 文件之一。一条规则是每个标头必须能够独立于所有其他标头包含在内。换句话说,每个标头之前不得包含其他标头。 经过一番努力,我很快意识到,即使作为一名拥有 25 年以上经验的高级软件工程师,这也不是一件容易的事,因为结构定义非常复杂且具有层次结构。

我的问题特别是:

  1. 将所有这些标头包含在project_common.h中是不好的做法,并且破坏了将其全部拆分的意义。
  2. 将所有这些分开,使得生成的标头可以以任意组合包含在给定的 C 文件中,这真的非常困难。

所以我要问的是,是否有任何工具可以帮助将所有 .h 文件重构为更优化的配置,和/或是否有一种公认的方法比反复试验更好?

到目前为止,我已经尝试移动结构定义,但进展非常缓慢且乏味,尽管我已将project_common.h 的大小几乎减半,但我创建的新标头只有在按正确顺序包含时才有效。

c refactoring header-files automated-refactoring
© www.soinside.com 2019 - 2024. All rights reserved.