Я занимался этой проблемой в последнее время.В нашем проекте мы используем C ++ и имеем один Xh и один файл X.cpp для каждого класса X.
Моя стратегия следующая:
(1) Если Ah, где объявлен класс A, относится к классу B, тогда я должен включить заголовок Bh. Если объявление класса A содержит только тип * B, то мне нужно только предварительное объявление class B; в Ah, возможно, мне потребуется включитьBh в A.cpp
(2) Используя вышеописанную процедуру, я перемещаю как можно больше включений из Ah в A.cpp.Затем я пытаюсь удалить одно включение за раз и посмотреть, компилируется ли файл .cpp.Это должно позволить минимизировать набор включаемых файлов в файле .cpp, но я не уверен на 100%, если результат минимален.Я также думаю, что можно написать инструмент, который сделает это автоматически.Я начал писать один для Visual Studio.Я был бы рад узнать, что есть такие инструменты.
Примечание : возможно, добавление правильной конструкции модуля с четко определенными отношениями импорта / экспорта может быть желательным дополнением для C ++ 0x,Это значительно упростит задачу реорганизации импорта и значительно ускорит компиляцию.