Просто переставьте определения:
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
, тогда все будет хорошо, поскольку вы можете использовать их с объявленным классом вперед.
Таким образом, переставив структуры так, чтобы они были определеныв порядке зависимости вы избавляетесь от ошибки.