【发布时间】:2011-01-03 22:45:19
【问题描述】:
我大致了解#include 对C 预处理器所做的规则,但我并不完全理解。现在,我有两个头文件,Move.h 和 Board.h,它们都定义了它们各自的类型(Move 和 Board)。在这两个头文件中,我都需要引用另一个头文件中定义的类型。
现在我在 Board.h 中有 #include "Move.h",在 Move.h 中有 #include "Board.h"。但是,当我编译时,gcc 会翻转并在 Move.h 和 Board.h 之间翻转给我一个很长(看起来像无限递归)的错误消息。
如何包含这些文件,这样我就不会无限期地递归包含这些文件?
【问题讨论】:
-
请注意,在理想世界中,您应该避免像这样的循环依赖。当然这并不总是可能的,有时它们可能非常有用,但是每当您创建循环依赖项时,您应该花点时间考虑一下并为自己证明它的存在。
-
@Greg D -- 我听取了您的建议并创建了另一个名为 Types.h 的文件,我在其中执行所有 #define-ing 和 typedef-ing。我将它包含在两个文件中,一切都很好!
标签: gcc include c-preprocessor