Здравствуйте, meerius, Вы писали:
M>Поподает ко мне в руки здоровенный проект, который не компилируется из-за циклической зависимости(в таком вот виде и попадает). И что бы найти ее и поправить, у меня уходит много времени. Тут я понимаю, что делать этого хорошо я никак не умею, а хотелось бы выработать некую технику для упрощения работы. M>Поделитесь опытом.
чтобы этого не возникало нужно
1. писать в хидерах только то, что будет использовано в другом файле(файлах), а не в файле реализующем хидер. то есть хидер — это только обьявление экспортируемых обьектов.
2. инклудить в хидер только то, что используется для дефиниций внутри хидера. и ни в коем случае не инклудить то, что не используется в хидере, а в его реализующем файле.
3. инклудить в хидер напрямую те файлы, что содержат необходимые для его деклараций обьекты, не допуская варианта, типа косвенного инклуда, то есть какого-то "левого" хидера, куда тем или иным образом проинклуденные нужные вам файлы. с такими левыми хидерами вы натаскиваете мусор в свой хидер.
4. если пред пункты не помогли. у вас плохое разбиение на модули и дефиниции в хидерах зависят друг от друга не в силу плохой структуры хидеров и инклудов, а плохого разбиения на модули. тут нужно просто слить друг с другом модули что друг от друга зависят. они явно должны быть обьеденены.