STRICT の有効化

STRICT シンボルを定義する場合は、型の宣言と使用においてより注意が必要な機能を有効にします。 これは、より移植性の高いコードを記述するのに役立ちます。 この余分な注意により、デバッグ時間も短縮されます。 STRICT を有効にすると、特定のデータ型が再定義され、明示的なキャストなしで、ある型から別の型への割り当てがコンパイラで許可されなくなります。 これは、Windows コードで特に役立ちます。 データ型を渡す際のエラーは、実行時に致命的なエラーを引き起こすのではなく、コンパイル時に報告されます。

Visual C++ では、 STRICT 型チェックが既定で定義されます。

ファイルごとに STRICT を定義するには、Windows.h を含める前 に #define ステートメントを挿入します。

#define STRICT
#include <windows.h>

STRICT を定義すると、データ型の定義は次のように変更されます。

  • 特定のハンドル型は、相互に排他的に定義されます。たとえば、HDC 型引数が必要な HWND を渡すことができません。 STRICT を使用しない場合、すべてのハンドルは HANDLE として定義されるため、コンパイラでは、別の型が必要なハンドルの 1 つの型を使用できません。
  • すべてのコールバック関数の型 (ダイアログ プロシージャ、ウィンドウ プロシージャ、フック プロシージャなど) は、完全なプロトタイプで定義されます。 これにより、パラメーター リストが正しくないコールバック関数を宣言できなくなります。
  • ジェネリック ポインターを使用する必要があるパラメーター型と戻り値型は、LPSTR または別のポインター型ではなく、LPVOID として正しく宣言されます。
  • COMSTAT 構造体は ANSI 標準に従って宣言されます。

STRICT の無効化

STRICT コンプライアンス