Глядя на базу с открытым исходным кодом, я наткнулся на этот код:
#include "StableHeaders.h"
#include "polygon.h"
#include "exception.h"
#include "vector.h"
...
Теперь StableHeaders.h - это предварительно скомпилированный заголовок, который включен cpp 'control' для принудительной генерации. Три включения, которые появляются после предварительно скомпилированного заголовка, также все равно включаются в файл StableHeaders.h. Мой вопрос заключается в том, включены ли эти файлы дважды, чтобы база кода строилась на компиляторах, которые не поддерживают предварительно скомпилированные заголовки? Так как я предполагаю, что кэширование include / guard / header сделает кэширование в любом случае избыточным ...
EDIT Кстати, в файле stableheaders.h есть проверка для win32 (примерно), поэтому я снова предполагаю, что include внутри stableheaders.h не будет включен в компиляторы, которые не поддерживают предварительно скомпилированные заголовки.