Я смотрю на создание структур C из данных XML, вообще говоря, компилятор C должен иметь определение чего-либо до того, как он будет использован, что означает, что дерево документа XML должно быть записано, начиная с его листьев и по направлению к егоroot.
Не похоже, что разделенное определение / объявление может быть сделано из структур, похожих на функции.
Может ли это быть?
Я недостаточно знаю XMLзнать, могут ли узлы иметь круговые или вообще нелинейные отношения.Такие как «камень> ножницы», «ножницы> бумага», «бумага> камень».
Я написал несколько тестов:
struct _child
{
char *child_name;
struct _parent *father_reference;
};
struct _parent
{
char *parent_name;
struct _child *child_reference;
};
Кажется, что объявление их в порядке будет работать нормально (все ли стандарты ISO соответствуют?), если вышедшие из строя элементы являются указателями , но этого нельзя сделать с фактическими структурами:
struct _child
{
char *child_name;
struct _parent father;
};
struct _parent
{
char *parent_name;
struct _child *child_reference;
};
main.c:6:17: error: field ‘father’ has incomplete type
struct _parent father;
^~~~~~
Точно не удивительно - как бы вы рассчиталиразмер объекта, который увеличивается на его размер во время компиляции?
Может ли это быть проблемой при преобразовании определенной структуры данных XML в реализацию структуры C?
Было бы правильно сказатьчто существует строгий линейный порядок в объявлениях структуры в C?