Macros de configuration C++/WinRT

Cette rubrique décrit les macros de configuration C++/WinRT. Sauf indication contraire, ces règles s’appliquent à toutes les macros de configuration C++/WinRT :

  • Tous les fichiers qui sont liés ensemble pour former un même module (.exe ou .dll) doivent avoir des paramètres de macro identiques. Ceci inclut les bibliothèques statiques.
  • Tous les paramètres de macro doivent être complets avant l’inclusion d’un fichier d’en-tête C++/WinRT.
  • Vous ne pouvez pas changer les paramètres de macro après avoir inclus un fichier d’en-tête C++/WinRT.

WINRT_LEAN_AND_MEAN

Si elle est définie, désactive ces fonctionnalités rarement utilisées (pour réduire les temps de compilation) :

  • La possibilité d’implémenter des interfaces exclusives en dehors du composant.
  • Spécialisations std::hash pour les pointeurs intelligents des classes d’interface et d’exécution.
  • Prise en charge de la sortie directe d’un hstring ou d’un IStringable dans un flux C++ depuis la version 2.0.221101.3.

Vous êtes autorisé à combiner des fichiers avec des paramètres différents pour WINRT_LEAN_AND_MEAN.

Les fichiers qui ne définissent pas WINRT_LEAN_AND_MEAN ont accès aux fonctionnalités rarement utilisées.

WINRT_NO_MODULE_LOCK

Si elle est définie, désactive les comptages d’objets pour le module actif. Le module n’est jamais déchargé du processus. La définition de cette macro est habituelle pour les fichiers exécutables (qui ne peuvent jamais être déchargés) ou pour les .dll que vous avez l’intention de conserver épinglées. Ne peut pas être combiné avec WINRT_CUSTOM_MODULE_LOCK.

WINRT_CUSTOM_MODULE_LOCK

Si elle est définie, vous permet de fournir votre propre implémentation de winrt::get_module_lock. Ne peut pas être combiné avec WINRT_NO_MODULE_LOCK.

Votre implémentation personnalisée de winrt::get_module_lock doit prendre en charge les opérations suivantes :

  • ++winrt::get_module_lock() : incrémenter le nombre de références sur le verrou du module.
  • --winrt::get_module_lock() : décrémenter le nombre de références sur le verrou du module.
  • if (winrt::get_module_lock()) : vérifier si le nombre de références n’est pas égal à zéro. (Nécessaire si vous générez une DLL.)

WINRT_ASSERT, WINRT_VERIFY

Ces macros vous permettent de personnaliser la gestion des assertions. WINRT_ASSERT ne nécessite pas l’évaluation de l’argument. WINRT_VERIFY nécessite l’évaluation de l’argument, même dans les builds hors débogage.

Si vous ne personnalisez pas ces macros et que _DEBUG est défini, C++/WinRT les rend équivalentes à _ASSERTE.

Si vous ne personnalisez pas ces macros et que _DEBUG n’est pas défini, C++/WinRT définit WINRT_ASSERT pour qu’elle ignore l’expression non évaluée et définit WINRT_VERIFY pour qu’elle ignore l’expression après l’avoir évaluée.

WINRT_NO_MAKE_DETECTION

Si elle est définie, désactive le diagnostic/WinRT C++ par défaut qui détecte que vous avez construit incorrectement une classe d’implémentation sans utiliser winrt::make.

Nous vous recommandons vivement de ne pas définir ce symbole, car cela masque une source courante d’erreurs de programmation.

WINRT_DIAGNOSTICS

Si elle est définie, active des statistiques internes pour suivre différentes opérations :

  • Le nombre de fois où chaque interface a été interrogée.
  • Le nombre de fois où chaque fabrique a été demandée (et si la fabrique est agile).

WINRT_NATVIS

Si elle est définie, inclut des fonctions d’assistance pour faciliter les visualisations du débogage natif dans Visual Studio. Le code n’est pas utilisé lors de l’exécution ; il existe seulement pour le débogage.

Si vous ne personnalisez pas cette macro, les fonctions de prise en charge de la visualisation sont activées si _DEBUG est défini. Pour plus d’informations, consultez Visualisation native du débogage Visual Studio (natvis) pour C++/WinRT.

Vous êtes autorisé à combiner des fichiers avec des paramètres différents pour WINRT_NATVIS.

Si un fichier est compilé avec la prise en charge WINRT_NATVIS, les visualisations de débogage natives seront activées pour le module résultant.

WINRT_EXPORT, WINRT_FAST_ABI_SIZE

N’utilisez pas ces macros.