Чтобы объявить экземпляр struct B
, определение struct B
должно быть complete .Вы заявляете, что
Заголовочные файлы, которые содержат объявления для структуры B и структуры C, не включены в этот конкретный заголовочный файл
На данный момент компилятор незнать, как выглядит struct B
, поэтому тип неполный ;таким образом, он отклонит любое объявление, которое пытается создать экземпляр из struct B
, такое как объявление для variable1
.Вы можете объявить указатель на неполный тип, как вы делаете с variable2
, так как все типы структурных указателей имеют одинаковый размер и представление.
Затем вы заявляете
, но даже если я включу их, это не имеет значения
, что настоятельно рекомендует (во всяком случае, мне) круговую зависимостьмежду struct A
и struct B
, что плохо для Джуджу.struct A
не может быть завершено до тех пор, пока struct B
не будет завершено, а struct B
не может быть завершено до struct A
.Изменение variable1
на указатель на struct B
должно быть достаточно, чтобы сломать эту зависимость.
Если это так, вы можете пересмотреть свой дизайн.