C++/WinRT 構成マクロ

このトピックでは、C++/WinRT 構成マクロについて説明します。 特に指定がない限り、次の規則は、すべての C++/WinRT 構成マクロに適用されます。

  • 1 つのモジュール (.exe または .dll) を形成するためにまとめてリンクされているすべてのファイルには、同じマクロ設定が必要です。 静的ライブラリが含まれていること。
  • すべての C++/WinRT ヘッダー ファイルを含める前に、すべてのマクロ設定を完了する必要があります。
  • C++/WinRT ヘッダー ファイルを含めた後、マクロ設定を変更できない場合があります。

WINRT_LEAN_AND_MEAN

定義した場合、(コンパイル時間を短縮するために) 次のあまり使用されない機能が無効になります。

  • コンポーネントの外部で排他的インターフェイスを実装する機能。
  • インターフェイスとランタイム クラスのスマート ポインターの std::hash 特殊化。
  • C++ ストリームに hstring または IStringable を直接出力するためのサポート (バージョン 2.0.221101.3 以降)。

WINRT_LEAN_AND_MEAN の設定が異なるファイルを結合することができます。

WINRT_LEAN_AND_MEAN が定義されていないファイルは、あまり使用されない機能にアクセスできます。

WINRT_NO_MODULE_LOCK

定義した場合、現在のモジュールのオブジェクト数が無効になります。 モジュールがプロセスからアンロードされることはありません。 このマクロは、実行可能ファイル (アンロードされることがない) や、ピン留めされたままにする .dll に定義するのが一般的です。 WINRT_CUSTOM_MODULE_LOCK と組み合わせることはできません。

WINRT_CUSTOM_MODULE_LOCK

定義した場合、winrt::get_module_lock の独自の実装を指定できます。 WINRT_NO_MODULE_LOCK と組み合わせることはできません。

winrt::get_module_lock の カスタム実装では、次の操作をサポートする必要があります:

  • ++winrt::get_module_lock(): モジュール ロックの参照カウントをインクリメントします。
  • --winrt::get_module_lock(): モジュール ロックの参照カウントをデクリメントします。
  • if (winrt::get_module_lock()): 参照カウントが 0 以外かどうかを確認します。 (DLL をビルドする場合に必要です。)

WINRT_ASSERT、WINRT_VERIFY

これらのマクロでは、アサーションの処理をカスタマイズできます。 WINRT_ASSERT では、引数を評価する必要はありません。 WINRT_VERIFY では、デバッグ以外のビルドでも、引数を評価する必要があります。

これらのマクロをカスタマイズしない場合で、_DEBUG が定義されている場合、C++/WinRT により、これらは _ASSERTE と同等になります。

これらのマクロをカスタマイズしない場合で、_DEBUG が定義されていない場合、C++/WinRT により WINRT_ASSERT は評価されていない式を破棄するよう定義され、WINRT_VERIFY は評価後に式を破棄するよう定義されます。

WINRT_NO_MAKE_DETECTION

定義した場合、winrt::make を使用せずに実装クラスを誤って構築した場合に検出される既定の C++/WinRT 診断が無効になります。

定義すると、プログラミング エラーの一般的な原因が隠されるため、このシンボルを定義しないことを強くお勧めします。

WINRT_DIAGNOSTICS

定義した場合、内部統計でさまざまな操作を追跡できるようになります。

  • 各インターフェイスに対してクエリが実行された回数。
  • 各ファクトリが要求された回数 (およびファクトリがアジャイルかどうか)。

WINRT_NATVIS

定義した場合、Visual Studio でネイティブ デバッグ視覚化を支援するヘルパー関数が含まれます。 このコードは実行時には使用されません。デバッグ用にのみ存在します。

このマクロをカスタマイズしない場合、_DEBUG が定義されている場合に、視覚化サポート関数が有効になります。 詳しくは、C++/WinRT 用の Visual Studio ネイティブ デバッグ視覚化 (natvis) に関する記事をご覧ください。

WINRT_NATVIS の設定が異なるファイルを結合することができます。

いずれかのファイルが WINRT_NATVIS サポートを使用してコンパイルされた場合、生成されるモジュールではネイティブのデバッグの視覚化が有効になります。

WINRT_EXPORT、WINRT_FAST_ABI_SIZE

これらのマクロは使用しないでください。