我的一个头文件queue.h文件的结构具有在另一个文件pathing.h中定义的结构。 queue.h包含pathing.h,但反之亦然。编译器gcc告诉我结构是不完整的类型。项目中的多个文件都包含它们,但我确保它们首先包含pathing.h。我看过同样问题的各个帖子,但它们似乎是由前向声明或循环包含引起的。据我所知,不是。
queue.h
#include "pathing.h"
typedef struct _queue{
struct queue* below;
struct point_t value;
}queue;
point_t pop(queue* a);
point_t peek(queue a);
void add(queue* a, point_t pointer);
pathing.h
#ifndef _pathing_
#define _pathing_
typedef unsigned char byte_t;
typedef struct _point_t{
int x;
int y;
}point_t;
int exec(int argc,char* arg[]);
#endif
P.S。我是C的新手并且正在自学,所以如果这些代码有任何不好的风格或者可以大大简化,请告诉我。
答案 0 :(得分:5)
typedef struct _queue{
// This is a typo. You are missing the _ before queue.
// struct queue* below;
struct _queue* below;
struct point_t value;
}queue;
关于point_t
,代码中没有struct point_t
这样的内容。您可以使用:
struct _point_t value;
或
point_t value;