0

我在 input_lib.c 中有这个:

#include "input_lib.h"

struct edge {
    int from;
    int to;
};

input_lib.h 包含我的 typedef:

typedef struct edge edge;

然后在另一个包含 的文件中input_lib.h,我声明了一个变量并尝试使用它:

edge *my_edge = read_next_edge();
printf("%d, %d", my_edge->from, my_edge->to);

printf我在该行收到错误:

error: dereferencing pointer to incomplete type

read_next_edge() 返回由以下分配的边*:

edge *next_edge = malloc(sizeof(struct edge));

我的 C 有点生锈,所以我想我只是在某个地方犯了一个小错误,但我很难弄清楚在哪里。如果有人能解释我的错误在哪里,以及为什么我得到它,我将不胜感激。谢谢

4

2 回答 2

4

你的struct定义应该在input_lib.h

于 2013-10-14T02:06:54.700 回答
1

如果您希望在 之外访问结构的内部input_lib.c,则结构定义需要在input_lib.h. 如果您希望外部代码input_lib.c使用访问函数来获取信息,那么您可以使结构不透明(不完整),但您需要调用函数来获取信息。

无论哪种方式都有效;选择一个并坚持下去。

于 2013-10-14T02:11:59.223 回答