Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 字段的类型不完整,即使包含_C - Fatal编程技术网

C 字段的类型不完整,即使包含

C 字段的类型不完整,即使包含,c,C,我的一个头文件queue.h有一个结构,它在另一个文件pathing.h中定义了一个结构。queue.h包括pathing.h,但不包括pathing.h。编译器gcc告诉我该结构是一个不完整的类型。项目中的多个文件都包含这两个文件,但我确保它们首先包含pathing.h。我看过很多有同样问题的帖子,但它们似乎是由转发声明或循环包含引起的。据我所知,我的朋友不是 队列.h #include "pathing.h" typedef struct _queue{ struct queue*

我的一个头文件queue.h有一个结构,它在另一个文件pathing.h中定义了一个结构。queue.h包括pathing.h,但不包括pathing.h。编译器gcc告诉我该结构是一个不完整的类型。项目中的多个文件都包含这两个文件,但我确保它们首先包含pathing.h。我看过很多有同样问题的帖子,但它们似乎是由转发声明或循环包含引起的。据我所知,我的朋友不是

队列.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
另外,我是C语言的新手,正在自学,所以如果这段代码的风格不好或者可以做得非常简单,请告诉我

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\u t
,您的代码中没有
struct point\u t
这样的东西。您可以使用:

struct _point_t value; 

关于
point\u t
,您的代码中没有
struct point\u t
这样的东西。您可以使用:

struct _point_t value; 


结构的名称是什么,
\u queue
queue
?删除
队列
结构中
结构点t值
前面的
结构。@JoachimPileborg,这是我从阅读其他人代码中获得的格式。我把它称为队列,这似乎有效。我真的不知道为什么和我一起工作的人把_名字放在它前面。@ckruczek,谢谢,这起作用了。我不是说前导下划线,我是说名字不匹配,你定义了一个名为
\u queue
的结构,但在结构内部使用
queue
。可能会将其与您稍后定义的
队列
类型别名混淆。结构的名称是什么,
\u queue
队列
?删除
队列
结构中
结构点
值前面的
结构。@JoachimPileborg,这是我从阅读其他人的代码中选择的格式。我把它称为队列,这似乎有效。我真的不知道为什么和我一起工作的人把_名字放在它前面。@ckruczek,谢谢,这起作用了。我不是说前导下划线,我是说名字不匹配,你定义了一个名为
\u queue
的结构,但在结构内部使用
queue
。可能会将其与您稍后定义的
队列
类型别名混淆。@yesennes如果您发布有关生成错误的问题,请始终在问题中包含实际的、完整的和未编辑的错误输出。这使得查看错误的实际内容变得更加容易。@yesennes如果您发布了关于生成错误的问题,请始终在问题中包含实际的、完整的和未编辑的错误输出。这使得我们更容易看到错误的实质。