>
>
Возможные проблемы с stdafx.h при испол…

Андрей Карпов
Статей: 673

Возможные проблемы с stdafx.h при использовании PVS-Studio

Иногда при проверке кода приложений с помощью PVS-Studio могут возникнуть проблемы с файлом stdafx.h, который представляет собой часть механизма "precompiled headers". Например, PVS-Studio может сообщать, что этот файл не найден. Или при наличии нескольких файлов stdafx.h будет использоваться не тот файл, который должен. При этом компиляция в Visual C++ проходит нормально.

Такая ситуация не является ошибкой с точки зрения PVS-Studio. Дело в том, что stdafx.h обрабатывается Visual C++ специальным образом. И на него иногда распространяются некоторые исключения из правил обработки заголовочных файлов. Проще говоря, Visual C++ обрабатывает файл stdafx.h не так, как все другие заголовочные файлы.

Подобной специальной обработки stdafx.h в анализаторе PVS-Studio (как и во многих других подобных инструментах) нет. Поэтому при проверке кода с помощью PVS-Studio иногда и могут возникать ошибки с stdafx.h.

Для того чтобы ошибок не возникало, нужно чтобы файл stdafx.h обрабатывался также, как и все другие заголовочные файлы. Отключать "precompiled headers" для этого не надо. Однако отключение "precompiled headers" может помочь обнаружить ошибки в организации файлов проекта.

Итак, если при проверке кода с помощью PVS-Studio у вас появляются проблемы с файлом stdafx.h, хотя при компиляции кода этих проблем нет, сделайте следующее.

  • Убедитесь, что весь код корректно компилируется (полностью). Для этого используйте команду "Rebuild Solution".
  • Отключите для проекта "precompiled headers". Если файлы проекта организованы корректно, то проект все равно должен компилироваться. В случае ошибок компиляции без "precompiled headers" исправьте эти ошибки.
  • Включите обратно "precompiled headers".
  • Проект готов к проверке с помощью PVS-Studio.

Следует заметить, что подобные действия нужны только в том случае, если при проверке кода с помощью PVS-Studio возникают ошибки с файлом stdafx.h. Если же файлы проекта организованны корректно, то PVS-Studio прекрасно сможет работать с "precompiled headers".