私の構造体宣言の抜粋:Cの構造体、不完全なフィールドタイプ
struct record{
char type[4];
uint32_t data_size;
uint32_t flags;
uint32_t id;
uint32_t revision;
uint16_t version;
uint16_t unknown;
uint8_t *data;
};
struct group;
union subgroup_record{
int type;
struct group subgroup;
struct record record;
};
struct record_list{
union subgroup_record subgroup_record;
struct record_list *next;
};
struct group{
char type[4];
uint32_t group_size;
uint8_t label[4]; // depends on group_type
int32_t group_type;
uint16_t stamp;
uint16_t unknown1;
uint16_t version;
uint16_t unknown2;
struct record_list record_list;
};
struct group_list{
struct group group;
struct group_list *next;
};
struct plugin{
struct record header;
struct group_list top_groups;
};
コンパイラは、私は、このエラーを与える:構造体を宣言
error: field ‘subgroup’ has incomplete type
フォワードはtypedef'ing、助けにはなりませんでした構造体の宣言を変更しても助けにならなかったので、私はどこでもポインタを持たないだろう(初心者のために、メモリの割り当てと解放はちょっと怖い)
これに対する解決策はありますか?
ありがとうございます!
_Side note: 'subgroup_record'には' int type'がありますが、これは他の 'union'メンバの' type'定義と互換性がある 'char type [4]'でなければなりません]。重大ではない、あるいは間違っているだけです。 –
'struct record_list record_list;' - > 'struct record_list * record_list;' '*'を追加してください。 – chux