我得到了一个中等规模但复杂的 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 年以上经验的高级软件工程师,这也不是一件容易的事,因为结构定义非常复杂且具有层次结构。
我的问题特别是:
所以我要问的是,是否有任何工具可以帮助将所有 .h 文件重构为更优化的配置,和/或是否有一种公认的方法比反复试验更好?
到目前为止,我已经尝试移动结构定义,但进展非常缓慢且乏味,尽管我已将project_common.h 的大小几乎减半,但我创建的新标头只有在按正确顺序包含时才有效。