C 两个头文件中的类型定义交换
我有两个头文件,它们应该使用彼此的typedef。情况如下: 例如: 在头文件中server.hC 两个头文件中的类型定义交换,c,C,我有两个头文件,它们应该使用彼此的typedef。情况如下: 例如: 在头文件中server.h typedef struct { int myint; }ServerSelfData; typedef struct { ServerSelfData servData; ClientSelfData clData; }SERVER_Data; 在名为client.h的第二个头文件中,我们有: typedef struct { int myint; }ClientSel
typedef struct
{
int myint;
}ServerSelfData;
typedef struct
{
ServerSelfData servData;
ClientSelfData clData;
}SERVER_Data;
在名为client.h的第二个头文件中,我们有:
typedef struct
{
int myint;
}ClientSelfData;
typedef struct
{
ClientSelfData clData;
ServerSelfData servData;
}CLIENT_Data;
因此,在编译过程中,其中一个定义会出错。其中一个取决于首先包含哪个文件
这个问题有解决方法吗?在这些头文件之前,您可以声明结构。稍后使用名称完成结构
typedef struct ServerSelfData ServerSelfData;
typedef struct CLIENT_Data CLIENT_Data;
typedef struct ServerSelfData
{
int myint;
}ServerSelfData;
ServerSelfData
和ClientSelfData
的定义可以移动到单独的头文件(或一个单独的头文件)中现在我得到了错误:error:field'servData'的类型不完整
我建议它现在知道该类型,但不知道该类型的分隔空间。@Hairi您应该完成类型声明(给出其所有成员)在第一次使用它们之前(在您的案例中是结构成员),或者限制您自己使用指向这些类型的指针。我相信情况就是这样。好的,这回答了我的问题。谢谢你。@Hairi我很高兴它帮助了你:)我开始认为有3个标题。第三个是包含client.h
和server.h
的,其中定义了server\u数据
和client\u数据
,这将解决问题。好的,但是如果这两个结构类型定义相互包含呢?那么我们就不能把它们分成三个文件。上面的例子是解释这种情况的甲烷代码。这是我的问题的主要表现。