C 使用彼此的数据类型(2个标题)
我正在尝试这样的事情: 文件1.h: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未知。为什么?我如何修复它呢?这是一个无
#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