C++/WinRT-configuratiemacro's

In dit onderwerp worden de C++/WinRT-configuratiemacro's beschreven. Tenzij anders vermeld, zijn deze regels van toepassing op alle C++/WinRT-configuratiemacro's:

  • Alle bestanden die aan elkaar zijn gekoppeld om één module (.exe of .dll) te vormen, moeten identieke macro-instellingen hebben. Dit omvat statische bibliotheken.
  • Alle macro-instellingen moeten zijn voltooid voordat u een C++/WinRT-headerbestand opneemt.
  • U mag geen macro-instelling wijzigen nadat u een C++/WinRT-headerbestand hebt opgenomen.

WINRT_LEAN_AND_MEAN

Indien gedefinieerd, schakelt u deze zelden gebruikte functies uit (om compileertijden te verminderen):

  • De mogelijkheid om exclusieve interfaces buiten het onderdeel te implementeren.
  • std::hash specialisaties voor interface- en runtimeklasse slimme aanwijzers.
  • Ondersteuning voor het rechtstreeks uitvoeren van een hstring of IStringable naar een C++-stream, sinds versie 2.0.221101.3.

U kunt bestanden combineren met verschillende instellingen voor WINRT_LEAN_AND_MEAN.

Bestanden die geen WINRT_LEAN_AND_MEAN definiëren, krijgen toegang tot de zelden gebruikte functies.

WINRT_NO_MODULE_LOCK

Indien gedefinieerd, worden objecttellingen voor de huidige module uitgeschakeld. De module wordt nooit uit het proces ontladen. Het definiëren van deze macro is gebruikelijk voor uitvoerbare bestanden (die nooit kunnen worden ontladen), of voor .dlls die u vastgezet wilt laten. Mag niet worden gecombineerd met WINRT_CUSTOM_MODULE_LOCK.

WINRT_CUSTOM_MODULE_LOCK

Indien gedefinieerd, kunt u uw eigen implementatie van winrt::get_module_lock bieden. Mag niet worden gecombineerd met WINRT_NO_MODULE_LOCK.

Uw aangepaste implementatie van winrt::get_module_lock moet de volgende bewerkingen ondersteunen:

  • ++winrt::get_module_lock(): Verhoog de referentieteller van de modulevergrendeling met één.
  • --winrt::get_module_lock(): Verlaag de referentietelling van de modulevergrendeling.
  • if (winrt::get_module_lock()): Controleer of het aantal verwijzingen niet-nul is. (Nodig als u een DLL bouwt.)

WINRT_ASSERT, WINRT_VERIFY

Met deze macro's kunt u de verwerking van asserties aanpassen. WINRT_ASSERT vereist niet dat het argument wordt geëvalueerd. WINRT_VERIFY vereist dat het argument wordt geëvalueerd, zelfs in builds zonder foutopsporing.

Als u deze macro's niet aanpast en _DEBUG is gedefinieerd, worden deze door C++/WinRT gelijk aan _ASSERTE.

Als u deze macro's niet aanpast en _DEBUG niet is gedefinieerd, definieert C++/WinRT WINRT_ASSERT om de expressie niet-geëvalueerd te verwijderen en definieert WINRT_VERIFY om de expressie te verwijderen nadat deze is geëvalueerd.

WINRT_NO_MAKE_DETECTION

Indien gedefinieerd, schakelt u de standaarddiagnose C++/WinRT uit waarmee wordt gedetecteerd dat u per ongeluk een implementatieklasse hebt gemaakt zonder winrt::make te gebruiken.

We raden u sterk aan dit symbool niet te definiëren, omdat dit een veelvoorkomende bron van programmeerfouten maskert.

WINRT_NO_SOURCE_LOCATION

Indien gedefinieerd, schakelt u het opnemen van bronbestand- en regelnummergegevens (en in builds voor foutopsporing, functiegegevens) uit wanneer er fouten ontstaan.

Deze aanvullende informatie wordt niet gebruikt door C++/WinRT, maar wordt beschikbaar gesteld aan andere bibliotheken die willen samenwerken met C++/WinRT-uitzonderingen, zoals de Windows-implementatiebibliotheek.

Standaard wordt de informatie opgenomen wanneer deze wordt gecompileerd in de C++20-modus of hoger. U kunt deze informatie onderdrukken om de binaire grootte te verminderen.

WINRT_DIAGNOSTICS

Indien gedefinieerd, kunnen interne statistieken verschillende bewerkingen bijhouden:

  • Het aantal keren dat elke interface is opgevraagd.
  • Hoe vaak elke fabriek werd opgevraagd (en of de fabriek agile is).

WINRT_NATVIS

Indien gedefinieerd, bevat helperfuncties om te helpen bij systeemeigen foutopsporingsvisualisaties in Visual Studio. De code wordt niet gebruikt tijdens runtime; deze bestaat alleen voor foutopsporing.

Als u deze macro niet aanpast, worden functies voor visualisatieondersteuning ingeschakeld als _DEBUG is gedefinieerd. Zie Visual Studio systeemeigen foutopsporingsvisualisatie (natvis) voor C++/WinRT voor meer informatie.

U kunt bestanden combineren met verschillende instellingen voor WINRT_NATVIS.

Als een bestand wordt gecompileerd met WINRT_NATVIS ondersteuning, wordt voor de resulterende module systeemeigen foutopsporingsvisualisaties ingeschakeld.

WINRT_EXPORT, WINRT_FAST_ABI_SIZE

Gebruik deze macro's niet.