На моей предыдущей работе у нас были большие проблемы со временем компиляции, и одна из использованных нами стратегий называлась паттерном огибающей.
По сути, он пытается минимизировать объем кода, скопированного в заголовках препроцессором, путем минимизации размера заголовка. Это было сделано путем перемещения всего, что не было общедоступным, в закрытый класс друзей, вот пример.
foo.h:
class FooPrivate;
class Foo
{
public:
Foo();
virtual ~Foo();
void bar();
private:
friend class FooPrivate;
FooPrivate *foo;
};
foo.cpp:
Foo::Foo()
{
foo = new FooPrivate();
}
class FooPrivate
{
int privData;
char *morePrivData;
};
Чем больше включаемых файлов вы делаете, тем больше он складывает. Это действительно помогает вашему времени компиляции.
Это затрудняет отладку в VC6, хотя, как я понял, сложным путем. Есть причина, по которой это предыдущая работа.