我之前的一位同事写了一个巨大的头文件,它有大约100多个具有内联成员函数定义的结构。这个结构文件包含在大多数类实现(cpp文件)和头文件中(不知道为什么我的同事没有使用前向声明)
阅读如此庞大的头文件不仅是一场噩梦,而且由于编译器不时会抱怨多个定义和循环引用而难以跟踪问题。总体编译过程也很慢。
为了解决许多这样的问题,我将这个头文件从其他头文件包含到cpp文件(尽可能),并使用了仅相关结构的前向声明。仍然我继续得到奇怪的多重定义错误,如"致命错误LNK1169:找到一个或多个多重定义的符号"。
我现在正在考虑是否应该重构此结构头文件,并在每个结构的单独h / cpp文件中分离结构声明和定义。虽然在没有Visual Studio中的重构工具的情况下执行此操作会很痛苦且耗时,但这是解决此类问题的好方法吗?
PS:此问题与以下问题有关:Multiple classes in a header file vs. a single header file per class
答案 0 :(得分:2)
当受到这样的重大重构的挑战时,您很可能会采用以下方法之一:批量重构或逐步重构。
批量执行此操作的好处是,您将非常快速地执行代码(与增量相比)但是如果您最终遇到某些错误,则可能需要花费相当多的时间才能修复它。
逐步执行此操作并逐个拆分类,可以降低耗时错误的风险,但需要更多时间。
就个人而言,我会尝试将两种方法结合起来:
我已经发现用于创建自给自足的头文件的一些东西是预编译头文件。如果未包含正确的数据,此编辑将失败。