C 字段的类型不完整-联合&;结构
我有以下几种:C 字段的类型不完整-联合&;结构,c,struct,types,field,union,C,Struct,Types,Field,Union,我有以下几种: struct netlib_nw { int id; union netlib_op op; }; union netlib_op { struct netlib_op_readdir op_readdir; struct netlib_op_readdir_recv op_readdir_recv; }; struct netlib_op_readdir { char* path; }; struct netlib_op_readdir_recv {
struct netlib_nw {
int id;
union netlib_op op;
};
union netlib_op {
struct netlib_op_readdir op_readdir;
struct netlib_op_readdir_recv op_readdir_recv;
};
struct netlib_op_readdir {
char* path;
};
struct netlib_op_readdir_recv {
char** recv;
};
我有它们,因为我想通过网络传输netlib\u nw
,里面有不同的东西
以下是我得到的错误:
error: field has incomplete type 'union netlib_op'
union netlib_op op;
^
note: forward declaration of 'union netlib_op'
union netlib_op op;
如何解决这个问题?我不明白这是怎么回事
谢谢你的帮助 只需重新排列定义:
struct netlib_op_readdir {
char* path;
};
struct netlib_op_readdir_recv {
char** recv;
};
union netlib_op {
struct netlib_op_readdir op_readdir;
struct netlib_op_readdir_recv op_readdir_recv;
};
struct netlib_nw {
int id;
union netlib_op op;
};
问题在于,在原始代码中,当解析netlib_nw
时,会看到类型为netlib_op
的声明,但该类型未定义(因此它是不完整的)。例如,如果您使用了一个成员,它是指向netlib_nw
的指针或引用,那么一切都会很好,因为您可以将它们与前向声明的类一起使用
因此,通过重新排列结构,使其按照依赖关系的顺序定义,您可以消除错误。只需重新排列定义:
struct netlib_op_readdir {
char* path;
};
struct netlib_op_readdir_recv {
char** recv;
};
union netlib_op {
struct netlib_op_readdir op_readdir;
struct netlib_op_readdir_recv op_readdir_recv;
};
struct netlib_nw {
int id;
union netlib_op op;
};
问题在于,在原始代码中,当解析netlib_nw
时,会看到类型为netlib_op
的声明,但该类型未定义(因此它是不完整的)。例如,如果您使用了一个成员,它是指向netlib_nw
的指针或引用,那么一切都会很好,因为您可以将它们与前向声明的类一起使用
因此,通过重新排列结构,使它们按照依赖关系的顺序定义,您可以消除错误。就像您所做的那样,编译器从上到下读取源文件。正如您所做的,如果遇到以前未在任何地方定义过的类型的变量声明,它会感到困惑。就像您所做的一样,编译器从上到下读取源文件。和您一样,如果它遇到一个以前没有在任何地方定义过的类型的变量声明,它也会感到困惑。