即使包含字段,字段也不完整

时间:2015-10-01 04:57:12

标签: c

我的一个头文件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的新手并且正在自学,所以如果这些代码有任何不好的风格或者可以大大简化,请告诉我。

1 个答案:

答案 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;