Прежде всего VS проверяет только те заголовки, которые являются частью вашего проекта (включены в файл проекта / часть дерева файлов).
Есть некоторые заголовочные файлы, которые обрабатываются особым образом, например, resource.h
. Этот файл имеет тег комментария в начале, который определяет файл как независимый. Смотрите мой другой вопрос об этой проблеме здесь на SO.
VS также кэширует зависимости класса (какой класс объявлен в каком заголовке, какой cpp использует какой заголовок и т. Д.), Если вы используете опцию компилятора минимальное перестроение (/ Gm, если я правильно помню). См. Эту страницу MSDN по настройке компилятора / Gm для более подробной информации, например:
При минимальном перестроении определения классов не меняются между включаемыми файлами. Определения классов должны быть глобальными для проекта (должно быть только одно определение данного класса), поскольку информация о зависимостях в файле .idb создается для всего проекта. Если у вас есть несколько определений для класса в вашем проекте, отключите минимальную перестройку.
Кроме того, я не уверен, правильно ли разрешены зависимости, если вы используете force include настройки проекта ...
Надеюсь, что это было полезно.