我想大家都知道标题中的循环依赖是什么。 它的结果通常如下:
错误:'MyClass'未在此范围内声明
如果程序很短,很明显该怎么办。 但如果程序有几十个文件......
我的问题是“是否有一些算法来查找循环依赖?” 我指的是一些特定的步骤,它们会带给您成功,而不仅仅是“在您找到它之前查看代码”。
可能是某个程序,它可以做到吗?
答案 0 :(得分:0)
文档工具Doxygen可以生成显示依赖关系的图表。我用它来显示不同库的头文件之间的循环依赖。
答案 1 :(得分:0)
我所知道的至少一个编译器(Visual C ++)有一个名为“show includes”的选项,可以帮助您跟踪包含顺序。这可以帮助您找出周期发生的位置。如果您的编译器没有这样的选项,您可以将#pragma message(或等效的)添加到文件的开头以跟踪它。
答案 2 :(得分:-1)
但如果程序有几十个文件......
然后它仍然很短。转到编译器错误消息中提到的行,查看此处是否可以使用类。如果* .cpp中出现问题,则#include相应的文件。如果标题中出现问题,请添加前向声明(class MyClass;
)。如果前向声明不够,则#include声明myclass的文件。如果这会导致循环依赖,那么每个标头的类型太多。将标题拆分为几个较小的标题。一种方法是为整个程序提供每个标题一个类,但在许多情况下,这可能是过度的。