C 使用彼此的数据类型(2个标题)

C 使用彼此的数据类型(2个标题),c,struct,enums,identifier,C,Struct,Enums,Identifier,我正在尝试这样的事情: 文件1.h: #include "File2.h" typdef enum { MY_VARIABLE }ENUM_FILE1; typedef struct { STRUCT_FILE_2 name }STRUCT_FILE1; 文件2.h: #include "File1.h" typdef struct { ENUM_FILE1 name; }STRUCT_FILE2; 但标识符ENUM_FILE1未知。为什么?我如何修复它呢?这是一个无

我正在尝试这样的事情:

文件1.h:

#include "File2.h"

typdef enum
{
   MY_VARIABLE
}ENUM_FILE1;

typedef struct
{
   STRUCT_FILE_2 name
}STRUCT_FILE1;
文件2.h:

#include "File1.h"

typdef struct
{
   ENUM_FILE1 name;
}STRUCT_FILE2;

但标识符ENUM_FILE1未知。为什么?我如何修复它呢?

这是一个无限包含循环。您可以通过将所有类型放在一个标题中来解决此问题

或者,您可以选择:

文件1.h:

typedef enum
{
   MY_VARIABLE
} ENUM_FILE1;

#include "File2.h"

typedef struct
{
   STRUCT_FILE_2 name;
} STRUCT_FILE1;

但是这样做是毫无意义的,因为您永远无法单独使用
File2.h
;无论如何,您都必须
#包括“File1.h”
。因此,最终您实际上仍然只有一个头。

将枚举定义移动到File2.h,而不包括File1.h