Включение STRICT

При определении символа STRICT вы включаете функции, требующие большей осторожности при объявлении и использовании типов. Это помогает написать более переносимый код. Эта дополнительная осторожность также сократит время отладки. Включение STRICT переопределяет определенные типы данных, чтобы компилятор не разрешал присваивание одного типа другому без явного приведения. Это особенно полезно при использовании кода Windows. Ошибки при передаче типов данных сообщаются во время компиляции, а не вызывают неустранимые ошибки во время выполнения.

В Visual C++ проверка типов STRICT определяется по умолчанию.

Чтобы определить STRICT для каждого файла, вставьте инструкцию #define перед включением Windows.h:

#define STRICT
#include <windows.h>

Если определен параметр STRICT , определения типов данных изменяются следующим образом:

  • Определенные типы дескрипторов определяются как взаимоисключающие; Например, вы не сможете передать HWND , где требуется аргумент типа HDC . Без strict все дескрипторы определяются как HANDLE, поэтому компилятор не запрещает использовать дескриптор одного типа, где ожидается другой тип.
  • Все типы функций обратного вызова (такие как диалоговые процедуры, процедуры окон и процедуры перехватчика) определяются с полными прототипами. Это не позволяет объявлять функции обратного вызова с неправильными списками параметров.
  • Типы параметров и возвращаемых значений, которые должны использовать универсальный указатель, правильно объявляются как LPVOID , а не как LPSTR или другой тип указателя.
  • Структура COMSTAT объявляется в соответствии со стандартом ANSI.

Отключение STRICT

Строгое соответствие