У меня есть два модуля: a и b.Как обрабатывать круговые зависимости в структурах typedef'd
хиджры:
#ifndef A_H_
#define A_H_
#include "b.h"
typedef struct {
b_t *b;
...
} a_t;
#endif // A_H_
b.h:
#ifndef B_H_
#define B_H_
#include "a.h"
typedef struct {
a_t *a;
...
} b_t;
#endif // B_H_
Как изменить это так, что он будет собирать? (Я хочу сохранить два отдельных блока компиляции.)
Редактировать: Я забыл сделать элементы структуры указателями.
Сначала я подумал, что члены, где указатели (что еще может быть сомнительным дизайном, но, по крайней мере, возможно с форвард-декларациями и дающим хотя бы одну структуру тегом) ... Что это должно делать? Обе структуры потребуют бесконечного объема памяти, вы не можете сделать 'struct foo {struct foo f; }; по той же причине. – mafso
Последнее примечание: не используйте '_t' в качестве суффикса для типов. Идентификаторы, заканчивающиеся на '_t', зарезервированы POSIX. – fuz