【发布时间】:2017-02-03 11:19:20
【问题描述】:
我在编译代码时遇到问题。我猜它是循环依赖,但无论如何我的问题是如何读取 gcc 告诉我的输出。我得到这样的东西:
In file included from src/./../lib_ex/./../lib_ex/./../lib_ex/./../lib_ex/trav_item.h:7:0,
from src_core/./../lib_ex/./../lib_ex/./../lib_ex/path.h:11,
然后列出的错误之一是这样的: 来自
src_core/main.c:8: src_core/./../lib_ex/./../lib_ex/./../lib_ex/./../lib_ex/./../lib_ex/bubble.h:22:2: error: unknown type name ‘Path’
所以我想知道现在在哪里检查问题,如上所述,它列出了标题 path.h 和 trav_item.h 但下面提到了另一个bubble.h
所以在我的标题 path.h 中我有以下条目(只是缩短了看看我是否确实有一个 ciruclar 依赖项:
#include "./../lib_ex/trav_item.h"
struct Traversal_item;
typedef struct Path {
int ID;
char* ex;
Traversal_item* ti;
} Path;
在 trav_item.h.i 中有这个:
#include "./../lib_ex/bubble.h"
#include "./../lib_ex/path.h"
struct Path;
typedef struct Traversal_item {
// some variables
Path* path;
} Traversal_item;
所以我认为我必须预先定义结构路径才能在此处使用它,但显然我仍然做错了什么:/。
哦,在 bubble.h 中,我还包含了 path.header:
#include "./../lib_ex/path.h"
typedef struct {
Path* path;
} BBL;
【问题讨论】:
-
您可能有一些文件(未显示)包含一个或多个这些标头,但在仅给出前向声明时使用结构。例如,要访问结构成员,前向声明是不够的。
-
有这样的相互依赖关系,将三个包含文件合并为一个不是更好吗?
标签: c