4

我想你们都知道什么是标头中的循环依赖。它的结果通常如下所示:

错误:未在此范围内声明“MyClass”

如果程序很短,很清楚该怎么做。但是如果程序有几十个文件......

我的问题是“是否有一些算法可以找到循环依赖?” 我的意思是一些特定的步骤,它们会让你成功,而不仅仅是“查看代码直到找到它”。

可能是一些程序,它是做什么的?

4

3 回答 3

0

我知道的至少一个编译器(Visual C++)有一个名为“显示包含”的选项,可以帮助您跟踪包含顺序。这可以帮助您找出循环发生的位置。如果您的编译器没有这样的选项,您可以将#pragma 消息(或等效的)添加到文件的开头以跟踪它。

于 2012-05-05T17:09:37.950 回答
0

文档工具 Doxygen 可以生成显示依赖关系的图表。我用它来显示不同库的头文件之间的循环依赖关系。

于 2012-05-05T15:28:47.770 回答
-1

但是如果程序有几十个文件......

然后它仍然很短。转到编译器错误消息中提到的行,查看类是否在此处可用。如果 *.cpp 出现问题,#include 对应的文件。如果标题出现问题,请添加前向声明(class MyClass;)。如果前向声明不充分,则使用声明 myclass 的#include 文件。如果这导致循环依赖,那么每个标头的类型太多。将标头拆分为几个较小的标头。一种方法是为整个程序的每个标头设置一个类,但在许多情况下,这可能是矫枉过正。

于 2012-05-05T16:20:29.920 回答