Это описание абсурдно, тк подразумевает бесконечное вложение структур, что требует бесконечного объема памяти для реализации хотя бы одного экземпляра такой структуры.
То, что можно сделать в данном случсае — это сделать полями структур не сами структуры, а указатели на них.
И еще, чтобы компилятор не ругался на неописанные структуры придется добавить опережающее описание, типа такого:
struct STRUCT2;
struct STRUCT1
{
...
STRUCT2* Struct2;
};
struct STRUCT2
{
...
STRUCT1* Struct1;
};