Precompiled headers, опция Force Include и забытые инклуды
Я использую в своих проектах precompiled headers и опцию Visual Studio "force include", чтобы не засорять свои и чужие исходники записями #include "stdafx.h"
В stdafx.h перечислены наиболее часто используемые заголовочные файлы:
#include <string>
#include <vector>
#include <map>
#include <windows.h>
#include <tchar.h>
#include <atlbase.h>
#include <atlapp.h>
#include <atlwin.h>
//...
Проблема в том, что при использовании такого подхода, модули становятся не самодостаточными. Кое-где я забываю сделать, например, #include <map>
, и при компиляции без использования PCH (у меня много подпроектов в проекте, использующих разные системы сборки, но одни и те же файлы), я получаю ошибку.
Как не допустить появления таких ошибок? Кроме как переодически перекомпилировать с выключенной опцией Force Include.
Источник: Stack Overflow на русском