У меня есть несколько файлов заголовков, которые сводятся к следующему:
tree.h:
#include "element.h"
typedef struct tree_
{
struct *tree_ first_child;
struct *tree_ next_sibling;
int tag;
element *obj;
....
} tree;
и element.h:
#include "tree.h"
typedef struct element_
{
tree *tree_parent;
char *name;
...
} element;
Проблема заключается в том, что они оба ссылаются друг на друга, поэтому для дерева требуется элемент, который нужно включить, а элемент требует, чтобы дерево было включено.
Это не работает, потому что для определения структуры "дерева" структура элемента должна быть уже известна, но для определения структуры элемента должна быть известна древовидная структура.
Как разрешить эти типы циклов (я думаю, что это может иметь какое-то отношение к 'forward declaration'?)?